Domanda

XAMPP semplifica la configurazione di uno stack LAMP locale per Windows. Quindi è abbastanza deludente che abilitare i file htaccess sia un incubo.

Il mio problema:
Ho un'applicazione PHP che richiede apache / php per cercare una directory / Includes / contenuta nell'applicazione. Per fare ciò, i file htaccess devono essere consentiti in apache e il file htaccess deve specificare esattamente dove si trova la directory include.

Il problema è che non riesco a ottenere la mia configurazione di apache per visualizzare questi file htaccess. Ho avuto grossi problemi installando questa app su uni e ottenendo gli amministratori lì per aiutare con l'installazione. Non dovrebbe essere così difficile, ma per qualche motivo non riesco proprio a far funzionare bene Apache.

Questa è la mia configurazione:

c: \ xampp
c: \ xampp \ htdocs
c: \ xampp \ apache \ conf \ httpd.conf - dove ho apportato le modifiche elencate di seguito
c: \ xampp \ apache \ bin \ php.ini - dove le modifiche a questo file influenzano l'installazione di php
È interessante notare che le modifiche di c: \ xampp \ php \ php.ini non significano nulla - questo NON è l'ini che influenza l'installazione di php.

Le seguenti righe sono aggiunte che ho apportato al file httpd.conf

#AccessFileName .htaccess
AccessFileName htaccess.txt
#
# The following lines prevent .htaccess and .htpasswd 
# files from being viewed by Web clients. 
#
#<Files ~ "^\.ht">
<Files ~ "^htaccess\.">
    Order allow,deny
    Deny from all
</Files>

<Directory "c:/xampp/htdocs">
#
# AllowOverride controls what directives may be placed in 
# .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>

Quanto segue è l'intero file htaccess contenuto in: c: \ xampp \ htdocs \ application \ htaccess.txt

<Files ~ "\.inc
Warning: require(include.general.inc) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\application\menu\logon.php on line 21
quot;> Order deny,allow Deny from all </Files> php_value default_charset "UTF-8" php_value include_path ".;c:\xampp\htdocs\application\includes" php_value register_globals 0 php_value magic_quotes_gpc 0 php_value magic_quotes_runtime 0 php_value magic_quotes_sybase 0 php_value session.use_cookies 1 php_value session.use_only_cookies 0 php_value session.use_trans_sid 1 php_value session.gc_maxlifetime 3600 php_value arg_separator.output "&amp;" php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset="

La directory include esiste nella posizione specificata.

Quando provo ad accedere all'applicazione ricevo il seguente errore:

<*>

Errore irreversibile: require () [function.require]: apertura non riuscita richiesta 'include.general.inc' (include_path = '.; C: \ xampp \ php \ pear \ random') in C: \ xampp \ htdocs \ application \ menu \ logon.php sulla linea 21

Il percorso di inclusione c .. \ random \ è specificato nel file php.ini sopra elencato. L'installazione di xampp non consente un altro percorso include come specificato nel file htaccess.txt.

Per favore aiutatemi! Suppongo che probabilmente c'è un errore con il file httpd.conf O il file htaccess.txt .. ma non sembra leggere il file htaccess. Ho cercato di essere il più completo possibile, quindi perdona la verbosità del post.

Ora so che una soluzione alternativa potrebbe essere quella di aggiungere semplicemente include_path al file php, ma non avrò accesso al file php.ini nella posizione in cui intendo distribuire la mia app. Tuttavia, sarò in grado di richiedere che l'amministratore del server consenta i file htaccess.

Aggiornamento: rinominato htacces.txt in .htaccess e modificato le direttive appropriate nel file httpd.conf e tutto sembra funzionare. L'applicazione ha suggerito la denominazione di htaccess.txt e delle direttive previste nel httpd. Questi sono ovviamente sbagliati (almeno per uno stack xampp). Grazie per l'aiuto.

A proposito, usare ini_set () è un modo molto più semplice se l'app deve essere distribuita in più posizioni, quindi grazie soprattutto per quel puntatore.

È stato utile?

Soluzione

  1. Perché è necessario rinominare .htaccess in htaccess.txt
  2. Prova a impostare il percorso_incluso usando set_include_path () e vedi se aiuta (come soluzione intermedia)
  3. Verifica quale php.ini utilizzare tramite un phpinfo ()

Altri suggerimenti

Puoi modificare il percorso_incluso su ogni richiesta usando ini_set (). Ciò eviterebbe di usare affatto htaccess.

Il mio htaccess funziona correttamente con XAMPP - sebbene alcuni moduli siano disabilitati per impostazione predefinita - sei sicuro che i moduli che desideri siano abilitati?

Penso che il punto di ricerca che stai cercando sia:

AllowOverride All

La mia ipotesi è che all'interno di xampp è necessario abilitare AllowOverride (tramite un .htaccess) in httpd.conf. È una semplice misura di sicurezza che impedisce ai neofiti di installare una piattaforma hackerabile: P

È necessario abilitare AllowOverride All nel file httpd.conf principale. Guarda dentro XAMPP FOR / apache / conf / http.conf)

Basta fare questo:

open file ...\xampp\apache\conf\httpd.conf

find line "LoadModule rewrite_module modules/mod_rewrite.so"

if here is a # before this line remove it.(remove comment)

funziona

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top