Habilitar la visualización de errores en PHP solo a través de htaccess


113

Estoy probando un sitio web en línea.

En este momento, los errores no se muestran (pero sé que existen).

Solo tengo acceso al .htaccessarchivo.

¿Cómo cometo todos los errores para mostrar usando mi .htaccessarchivo?


Agregué estas líneas a mi .htaccessarchivo:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Y las páginas ahora muestran:

Error de servidor interno


He hecho algunas búsquedas en Google, agregué algunas banderas a mi htaccess; y mis páginas no se pueden mostrar de nuevo
Ogugua Belonwu

3
Parece que no tiene los derechos para anular estas configuraciones de htaccess. Es posible que deba establecer AllowOverride Allla configuración de Apache, si tiene acceso a eso.
kapa

Verifique su registro de errores de Apache. Tendrá que explicar por qué está recibiendo el error interno 500. Lo que ve en el navegador es, por diseño, inútil para fines de diagnóstico.
Marc B

Respuestas:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
agregué estas líneas a mi htaccess: php_flag display_startup_errors en php_flag display_errors en php_flag html_errors en y las páginas muestran un error interno del servidor
Ogugua Belonwu

4
Al usar PHP como un módulo de Apache, también puede cambiar las opciones de configuración usando directivas en los archivos de configuración de Apache (por ejemplo, httpd.conf) y archivos .htaccess. Necesitará los privilegios "AllowOverride Options" o "AllowOverride All" para hacerlo. php.net/manual/en/configuration.changes.php
silex

Cree PHP_errors.log y hágalo 777 de otra manera, probablemente no verá el archivo creado por apache y lleno ... al menos tuve que crearlo.
PJunior

2
como ogugua, ahora también tengo un error interno del servidor al usar estas líneas.
aterrizó el

1
Si obtiene un 500 es probablemente porque está usando php-fpm, no mod_php.
mpchadwick

41
php_flag display_errors on

Para activar la visualización real de errores.

Para configurar los tipos de errores que está mostrando, necesitará usar:

php_value error_reporting <integer>

Combinado con los valores enteros de esta página: http://php.net/manual/en/errorfunc.constants.php

Tenga en cuenta que si usa -1 para su número entero, mostrará todos los errores y será una prueba futura cuando agreguen nuevos tipos de errores.


17

Tengo ganas de agregar más detalles a la respuesta existente:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Otorgue permiso 777 o 755 al archivo de registro y luego agregue el código

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

al final de .htaccess. Esto protegerá su archivo de registro.

Estas opciones son adecuadas para un servidor de desarrollo. Para un servidor de producción, no debe mostrar ningún error al usuario final. Así que cambie las banderas de la pantalla a apagado .

Para obtener más información, siga este enlace: Manejo avanzado de errores de PHP a través de htaccess


1
¿Qué tal darle chmod "0644" al archivo de registro de errores? estaría funcionando todavía?
Andre Chenier

2

Si desea ver solo errores fatales en tiempo de ejecución:

php_value display_errors on
php_value error_reporting 4

2

Esto funciona para mí ( referencia ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.