Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de configuración para la gestión de errores
Nombre Por defecto Cambiable Historial de cambios
error_reporting NULL INI_ALL  
display_errors "1" INI_ALL  
display_startup_errors "1" INI_ALL Anterior a PHP 8.0.0, el valor por omisión era "0".
log_errors "0" INI_ALL  
log_errors_max_len "1024" INI_ALL Sin efecto a partir de PHP 8.0.0, eliminado a partir de PHP 8.1.0.
ignore_repeated_errors "0" INI_ALL  
ignore_repeated_source "0" INI_ALL  
report_memleaks "1" INI_ALL  
track_errors "0" INI_ALL Deprecado a partir de PHP 7.2.0, eliminado a partir de PHP 8.0.0.
html_errors "1" INI_ALL  
xmlrpc_errors "0" INI_SYSTEM  
xmlrpc_error_number "0" INI_ALL  
docref_root "" INI_ALL  
docref_ext "" INI_ALL  
error_prepend_string NULL INI_ALL  
error_append_string NULL INI_ALL  
error_log NULL INI_ALL  
error_log_mode 0o644 INI_ALL Disponible a partir de PHP 8.2.0.
syslog.facility "LOG_USER" INI_SYSTEM Disponible a partir de PHP 7.3.0.
syslog.filter "no-ctrl" INI_ALL Disponible a partir de PHP 7.3.0.
syslog.ident "php" INI_SYSTEM Disponible a partir de PHP 7.3.0.
Para más detalles y definiciones de los modos de INI_*, vea Dónde una directiva de configuración puede ser modificada.

He aquí una breve explicación de las directivas de configuración.

error_reporting int

Establece el nivel de error. Este parámetro es un entero, representando un campo de bits. Añada los valores siguientes para elegir el nivel que desee, tal como se describe en la sección Constantes predefinidas, y en el archivo php.ini. Para modificar esta configuración durante la ejecución del script, utilice la función error_reporting(). Consulte también la directiva display_errors.

El valor por omisión es E_ALL.

Anterior a PHP 8.0.0, el valor por omisión era : E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED. Esto significa que los diagnósticos de nivel E_NOTICE, E_STRICT y E_DEPRECATED no eran mostrados.

Nota: Las constantes PHP fuera de PHP

El uso de las constantes PHP fuera de PHP, como en el archivo httpd.conf, no tiene significado útil excepto en los casos donde se necesitan valores enteros. Y desde que los niveles de errores fueron añadidos, el valor máximo (para E_ALL) debería cambiar. Por lo tanto, en lugar de E_ALL, utilice un valor más grande para cubrir todos los bits, un valor numérico como 2147483647 (incluyendo todos los errores, y no solo los errores de tipo E_ALL).

display_errors string

Esta directiva determina si los errores deben ser mostrados en pantalla o no.

El valor "stderr" envía los errores a stderr en lugar de a stdout.

Nota:

Es una directiva necesaria en desarrollo, pero que nunca debe ser utilizada en un sistema en producción. (ej. sistemas conectados a Internet).

Nota:

Aunque display_errors puede ser definido durante la ejecución (con la función ini_set()), no tendrá efecto si el script tiene errores fatales, ya que la acción deseada en el momento de la ejecución no será ejecutada.

display_startup_errors bool

Aunque display_errors esté activado, pueden ocurrir errores durante la secuencia de inicio de PHP, y estos errores son ocultados. Con esta opción, puede mostrarlos, lo cual es recomendado para el depurado. Fuera de este caso, se recomienda encarecidamente dejar display_startup_errors en off.

log_errors bool

Indica si los mensajes de error generados por los scripts deben ser registrados en el registro de errores del servidor o en error_log. Esta función es específica del servidor.

Nota:

Se recomienda utilizar el historial de errores, en lugar de mostrar los errores en los sitios de producción.

log_errors_max_len int

Configura la longitud máxima de los errores que serán registrados en el historial, en kilobytes. En las informaciones de error_log, se añade el origen. El valor por omisión es de 1024. 0 significa que no hay límite de longitud. Esta longitud se aplica para registrar en el historial los errores, mostrar los errores y también a $php_errormsg pero no para las llamadas explícitas a funciones como error_log().

Cuando se usa un integer, el valor del mismo es medido en bytes. También se puede usar la notación reducida, tal como se describe en esta FAQ.
ignore_repeated_errors bool

No registrar mensajes repetitivos. Los errores repetidos deben ocurrir en el mismo momento, en la misma línea y desde el mismo archivo de script, a menos que ignore_repeated_source esté definido a true.

ignore_repeated_source bool

Ignora la fuente del mensaje en los mensajes repetidos. Cuando se ha configurado esta opción a On, no se registrarán los errores repetidos provenientes de archivos y líneas de código diferentes.

report_memleaks bool

Si este parámetro está definido a On (por omisión), mostrará un informe de fuga de memoria detectada por el gestor de memoria Zend. Este informe será enviado a stderr en las plataformas Posix. En Windows, será enviado al depurador utilizando OutputDebugString() y podrá ser leído con herramientas como » DbgView. Este parámetro solo tiene efecto durante una compilación de depuración, y si error_reporting incluye E_WARNING en su lista autorizada.

track_errors bool

Si esta opción está activada, el último mensaje de error será colocado en la variable $php_errormsg.

html_errors bool

Si está activado, los mensajes de error incluirán etiquetas HTML. El formato de los errores HTML producirá mensajes clicables que redirigirán al usuario hacia una página describiendo el error o la función que causó el error. Estas referencias son afectadas por docref_root y docref_ext.

Si está desactivado, el mensaje de error será mostrado en texto plano.

xmlrpc_errors bool

Si está activado, desactiva el informe normal de error y formatea los errores como mensajes de error XML-RPC.

xmlrpc_error_number int

Utilizado como valor del elemento XML-RPC faultcode.

docref_root string

El nuevo formato de error contiene una referencia a una página describiendo el error, o la función que causó el error. Para el manual, puede descargar este último en su idioma, y configurar esta opción para que apunte a él. Si su copia del manual es accesible a "/manual/", puede simplemente utilizar docref_root=/manual/. Además, debe configurar docref_ext para que corresponda a las extensiones de su manual. docref_ext=.html. Es posible utilizar referencias externas. Por ejemplo, puede utilizar docref_root=http://manual/en/ o docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F"

La mayoría de las veces, se utiliza la opción docref_root con una barra al final ("/"). Pero no es obligatorio, como muestra el segundo ejemplo anterior.

Nota:

Esta directiva está destinada a ayudar en el desarrollo haciendo fácil la consulta de la descripción de una función. Nunca debe ser utilizada en un sistema de producción (ej. sistema conectado a Internet).

docref_ext string

Consulte también docref_root.

Nota:

El valor de docref_ext debe comenzar con un punto ".".

error_prepend_string string

La cadena a colocar antes de los mensajes de error. Solo utilizado cuando el mensaje de error es mostrado en pantalla. El uso principal es poder añadir etiquetado HTML adicional antes del mensaje de error.

error_append_string string

La cadena a colocar después de los mensajes de error. Solo utilizado cuando el mensaje de error es mostrado en pantalla. El uso principal es poder añadir etiquetado HTML adicional después del mensaje de error.

error_log string

Nombre del archivo donde serán registrados los errores. El archivo debe ser accesible en escritura por el usuario ejecutando el servidor web. Si el valor especial syslog es utilizado, los errores serán enviados al sistema de registro del servidor. En Unix, esto corresponde a syslog(3) y en Windows al registro de eventos. Consulte también: syslog(). Si esta directiva no está fijada, los errores son enviados al registro de errores SAPI. Por ejemplo, si es un registro de errores en Apache o stderr en CLI. Consulte también la función error_log().

error_log_mode int

Modo de archivo para el archivo definido para error_log.

syslog.facility string

Especifica el tipo de programa que registra el mensaje. Solo efectivo si error_log está definido como "syslog".

syslog.filter string

Especifica el tipo de filtro para filtrar los mensajes registrados. Los caracteres permitidos son pasados sin modificación; todos los demás son escritos en su representación hexadecimal prefijada con \x.

  • all – la cadena registrada será separada en caracteres de retorno de línea, y todos los caracteres son transmitidos sin alteraciones
  • ascii – la cadena registrada será separada en caracteres de retorno de línea, y todo carácter 7-bit ASCII no imprimible será escapado
  • no-ctrl – la cadena registrada será separada en caracteres de retorno de línea, y los caracteres no imprimibles serán escapados
  • raw – todos los caracteres son pasados al sistema de registro sin alteraciones, sin separaciones en los retornos de línea (idéntico a PHP anterior a 7.3)
Este parámetro afectará el registro a través de error_log definido como "syslog" y las llamadas a syslog().

Nota:

El tipo de filtro raw está disponible a partir de PHP 7.3.8 y PHP 7.4.0.

Esta directiva no es soportada en Windows.
syslog.ident string

Especifica la cadena de identidad que es añadida a cada mensaje. Solo efectivo si error_log está definido como "syslog".

add a note

User Contributed Notes 2 notes

up
23
cjakeman at bcs dot org
16 years ago
Using
<?php ini_set('display_errors', 1); ?>
at the top of your script will not catch any parse errors. A missing ")" or ";" will still lead to a blank page.

This is because the entire script is parsed before any of it is executed. If you are unable to change php.ini and set

display_errors On

then there is a possible solution suggested under error_reporting:

<?php
error_reporting
(E_ALL);
ini_set("display_errors", 1);
include(
"file_with_errors.php");
?>


[Modified by moderator]

You should also consider setting error_reporting = -1 in your php.ini and display_errors = On if you are in development mode to see all fatal/parse errors or set error_log to your desired file to log errors instead of display_errors in production (this requires log_errors to be turned on).
up
5
ohcc at 163 dot com
8 years ago
If you set the error_log directive to a relative path, it is a path relative to the document root rather than php's containing folder.
To Top