Archivos htaccess, php, incluye directorios y pesadilla de configuración de XAMPP de Windows

StackOverflow https://stackoverflow.com/questions/152823

Pregunta

XAMPP hace que la configuración de una pila LAMP local para Windows sea muy fácil. Así que es bastante decepcionante que habilitar archivos htaccess sea una pesadilla.

Mi problema:
Tengo una aplicación PHP que requiere apache / php para buscar un directorio / includes / contenido dentro de la aplicación. Para hacer esto, los archivos htaccess deben estar permitidos en apache y el archivo htaccess debe especificar exactamente dónde está el directorio de inclusión.

El problema es que no puedo obtener mi configuración de apache para ver estos archivos htaccess. Tuve problemas importantes al instalar esta aplicación en la universidad y hacer que los administradores estuvieran allí para ayudar con la configuración. Esto no debería ser tan difícil, pero por alguna razón no puedo hacer que Apache juegue bien.

Esta es mi configuración:

c: \ xampp
c: \ xampp \ htdocs
c: \ xampp \ apache \ conf \ httpd.conf - donde hice los cambios que se enumeran a continuación
c: \ xampp \ apache \ bin \ php.ini - donde los cambios en este archivo afectan la instalación de php
Es interesante notar que los cambios en c: \ xampp \ php \ php.ini no significan nada, este NO es el ini que afecta la instalación de php.

Las siguientes líneas son las adiciones que he hecho al archivo 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>

El siguiente es el archivo htaccess completo contenido en: 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="

El directorio de inclusión existe en la ubicación especificada.

Cuando intento acceder a la aplicación, recibo el siguiente error:

<*>

Error grave: require () [function.require]: error al abrir 'include.general.inc' (include_path = '.; C: \ xampp \ php \ pear \ random') en C: \ xampp \ htdocs \ application \ menu \ logon.php en la línea 21

La ruta de inclusión c .. \ random \ se especifica en el archivo php.ini listado arriba. La instalación de xampp no ??permite otra ruta de inclusión como se especifica en el archivo htaccess.txt.

¡Por favor ayuda! Supongo que probablemente haya un error con httpd.conf O con el archivo htaccess.txt ... pero no parece estar leyendo el archivo htaccess. He tratado de ser lo más completo posible, así que perdona la verbosidad de la publicación.

Ahora sé que una solución alternativa podría ser simplemente agregar include_path al archivo php, pero no voy a tener acceso al archivo php.ini en la ubicación donde planeo implementar mi aplicación. Sin embargo, podré solicitar que el administrador del servidor permita archivos htaccess.

Actualización: renombrado htacces.txt a .htaccess y enmendé las directivas apropiadas en el archivo httpd.conf y todo parece funcionar. La aplicación sugirió la denominación de htaccess.txt y las directivas enmendadas en httpd. Estos son obviamente erróneos (al menos para una pila xampp). Gracias por la ayuda.

Por cierto, usar ini_set () es una forma mucho más amigable si la aplicación necesita implementarse en múltiples ubicaciones, así que gracias especialmente por ese puntero.

¿Fue útil?

Solución

  1. ¿Por qué necesita cambiar el nombre de .htaccess a htaccess.txt
  2. Intente configurar el include_path usando set_include_path () y vea si eso ayuda (como una solución intermedia)
  3. Verifique qué php.ini usar a través de un phpinfo ()

Otros consejos

Puede modificar el include_path en cada solicitud usando ini_set (). Esto evitaría tener que usar htaccess en absoluto.

Mi htaccess funciona bien bajo XAMPP, aunque algunos módulos están deshabilitados de forma predeterminada. ¿Está seguro de que los módulos que desea están habilitados?

Creo que la frase de búsqueda que estás buscando es:

AllowOverride All

Mi conjetura es que dentro de xampp necesita habilitar AllowOverride (a través de un .htaccess) en httpd.conf. Es una simple medida de seguridad que evita que los novatos instalen una plataforma hackeable: P

Debe habilitar AllowOverride All en el archivo principal httpd.conf. Mire en el interior de XAMPP FOR / apache / conf / http.conf)

Simplemente haz esto:

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)

está funcionando

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top