2012-06-07 18 views
19

Cuando estoy usando .htaccess para la siguiente configuración de PHP, recibo 500 Internal Server Error al acceder al sitio web.500 Error interno del servidor al utilizar .htaccess para la configuración de PHP

el código en el archivo .htaccess:

php_flag display_errors off 
php_flag log_errors on 

el permiso de archivo para el archivo de .htaccess es 644

Yo sé que el código anterior es correcta. Pero cuando me mostró 500 Internal Server Error, probé un código diferente (probablemente también incorrecto), pero nada funcionó. El código diferente tratado son:

php_value display_errors off 
php_value log_errors on 

y

php_value display_errors 0 
php_value log_errors 1 

¿Qué puede ser la causa de 500 Internal Server Error?

Después de aprender de los comentarios sobre esta pregunta, encontré que la configuración de PHP en .htaccess no funciona con FastCGI. Entonces, para cambiar la configuración de PHP, necesito modificar el php.ini o necesito hacerlo en el código php. ¿Hay alguna manera alternativa, cuando no tengo acceso para modificar el archivo php.ini y no quiero modificar individualmente todos los archivos PHP?

+1

¿Tiene acceso al archivo error.log de Apache? –

+0

¿Se carga la página cuando elimina el archivo .htaccess? – Joey

+2

¿Estás usando 'mod_php' en tu configuración de Apache? Si está ejecutando PHP a través de CGI o FastCGI, no puede configurarlo a través de '.htaccess'. – lanzz

Respuesta

4

Al igual que los comentarios por encima de dicho: lo que necesita para hacer funcionar su módulo de PHP como Dynamic Shared Object para hacer que funcione, como se describe en los Apache PHP Request Hanlding Documentation

consideraciones DSO:

libphp proporciona directivas de Apache como php_ $ value y php_admin_ $ value. DSO es la única opción donde estas directivas serán válidas dentro de los archivos .htaccess o httpd.conf. Cuando estas directivas se compilan con el parche DSO concurrente, se deben llamar php4_ $ value y php5_ $ value en su lugar.

cgi, fcgi, suphp no funcionará.

1

Como has descubierto, la modificación de .htaccess solo funciona con un módulo de apache, donde se añadiría a las directivas que apache puede comprender. Esto no funcionará con cgi y otros.

La forma php es modificar el php.ini para todo el sitio, o modificarlo por directorio o por usuario.

Para php5.5 (no estoy seguro acerca de otras versiones) modifique el archivo .user.ini en el directorio donde quiera que se aplique esta configuración. Obviamente establecer esto en el directorio raíz del sitio lo haría aplicar a todo el sitio.

Vaya aquí para obtener información sobre .user.ini: http://php.net/manual/en/configuration.file.per-user.php

Ir aquí para ver la lista de directivas y en el que se pueden cambiar: http://php.net/manual/en/ini.list.php

Por último, para comprobar en su archivo (probablemente mencionan en los comentarios), agrega un phpinfo.php (el nombre no importa) archivo que contiene

<?php phpinfo() ?> 

al directorio para que pueda ver lo que los ajustes son para los scripts PHP que se ejecutan en ese directorio.

Cuestiones relacionadas