PHP 5.4.33 Released

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 de errores y registro
Nombre Por defecto Cambiable Historial de cambios
error_reporting NULL PHP_INI_ALL  
display_errors "1" PHP_INI_ALL  
display_startup_errors "0" PHP_INI_ALL  
log_errors "0" PHP_INI_ALL  
log_errors_max_len "1024" PHP_INI_ALL Disponible a partir de PHP 4.3.0.
ignore_repeated_errors "0" PHP_INI_ALL Disponible a partir de PHP 4.3.0.
ignore_repeated_source "0" PHP_INI_ALL Disponible a partir de PHP 4.3.0.
report_memleaks "1" PHP_INI_ALL Disponible a partir de PHP 4.3.0.
track_errors "0" PHP_INI_ALL  
html_errors "1" PHP_INI_ALL PHP_INI_SYSTEM en PHP <= 4.2.3.
xmlrpc_errors "0" PHP_INI_SYSTEM Disponible a partir de PHP 4.1.0.
xmlrpc_error_number "0" PHP_INI_ALL Disponible a partir de PHP 4.1.0.
docref_root "" PHP_INI_ALL Disponible a partir de PHP 4.3.0.
docref_ext "" PHP_INI_ALL Disponible a partir de PHP 4.3.2.
error_prepend_string NULL PHP_INI_ALL  
error_append_string NULL PHP_INI_ALL  
error_log NULL PHP_INI_ALL  
Para más detalles y definiciones de los modos de PHP_INI_*, vea Dónde se puede realizar un ajuste de configuración.

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

error_reporting integer

Establece el nivel de notificación de errores. El parámetro es o bien un valor de tipo integer que representa un campo de bits, o bien constantes con nombre. Los niveles de error_reporting y las constantes están descritos en Constantes predefinidas, y en php.ini. Para establecerlo en tiempo de ejecución, se ha de usar la función error_reporting(). Vése también la directiva display_errors.

En PHP 5.3 o posterior, el valor predeterminado es E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED. Este ajuste no muestra los niveles de error E_NOTICE, E_STRICT y E_DEPRECATED. Quizás quiera mostrarlos durante el desarrollo. Antes de PHP 5.3.0, el valor predeterminado es E_ALL & ~E_NOTICE & ~E_STRICT. en PHP, el valor predeterminado es E_ALL & ~E_NOTICE.

Nota:

La habilitación de E_NOTICE durante el desarrollo tiene algunos beneficios. Para las depuración: los mensajes NOTICE avisarán de posibles errores en el código. Por ejemplo, se advierte del uso de valores no asignados. Es extremadamente útil para encontrar errartas y ahorrar tiempo en la depuración. Los mensajes NOTICE avisarán de un estilo malo. Por ejemplo, $arr[item] es mejor que sea escrito como $arr['item'] ya que PHP intenta tratar "item" como una constante. Si no es una constante, PHP asume que es un índice de string del array.

Nota:

En PHP 5 está disponible el nuevo nivel de error E_STRICT. Antes de PHP 5.4.0, E_STRICT no estaba incluido dentro de E_ALL, por lo que se teniía de habilitar explícitamente este tipo de nivel de error en PHP < 5.4.0. La habilitación de E_STRICT durante el desarrollo tiene algunos beneficios. Los mensajes STRICT proporcionan sugerencias que pueden ayudar a asegurarse de la mejor interoperabilidad y la compatibilidad hacia delante del código. Estos mensajes pueden incluir cosas como llamar a métodos no estáticos de forma estática, definir propiedades en una definición de clase compatible mientras se definió en un trait usado, y antes de PHP 5.3, algunas características obsoletas emitirían errores E_STRICT como asignar objetos por referencias durante la instanciación.

Nota: Constantes de PHP fuera de PHP

El uso de constantes de PHP fuera de PHP, como en httpd.conf, no tiene un propósito útil, por lo que, en tales casos, se requerirán los valores de tipo integer. Y ya que se añadirán más niveles de error en el futuro, el valor máximo (para E_ALL) cambiará igualmente. Por lo que, en lugar de E_ALL se ha de considerar el uso de un valor grande para cubrir todos los campos de bits desde la actualidad hasta bien entrado en el futuro, un valor numérico como 2147483647 (incluye todos los errores, no sólo E_ALL).

display_errors string

Determina si los errores deberían ser impresos en pantalla como parte de la salida o si deberían ocultarse al usuario.

El valor "stderr" envía los errores a stderr en vez de a stdout. Este valor está disponible a partir de PHP 5.2.4. En versiones anteriores esta directiva era de tipo boolean.

Nota:

Ésta es una característica para ayudar al desarrollo y nunca debería usarse en sistemas de producción (p.ej. en sistemas conectados a internet).

Nota:

Aunque display_errors puede ser establecido en tiempo de ejecución (con ini_set()), no tendrá ningún efecto si el script tiene errores fatales. Esto es debido a que la acción deseada en tiempo de ejecución no se ejecuta.

display_startup_errors boolean

Incluso cuando display_errors está activado, los errores que ocurren durante la secuencia de arranque de PHP no se muestran. Se recomienda encarecidamente mantener desactivado display_startup_errors, excepto para la depuración.

log_errors boolean

Indica si los mensajes de error del script deberían de registrarse en el registro del servidor o en error_log. Esta opción es, por lo tanto, específica para servidores.

Nota:

Se aconseja encarecidamente usar el registro de errores en lugar de mostrar los errores en sitios web de producción.

log_errors_max_len integer

Establece la longitud máxima de log_errors en bytes. En error_log se añade información acerca del origen. El valor predeterminado es 1024, y 0 permite no aplicar ninguna longitud máxima en absoluto. Esta longitud se aplica a los errores registrados, a los errores mostrados y también a $php_errormsg.

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 boolean

No registra mensajes repetidos. Los mensajes repetidos deben ocurrir en la misma línea del mismo fichero a menos que ignore_repeated_source esté establecido a true.

ignore_repeated_source boolean

Ignora el origen del mensaje cuando se ignoran mensajes repetidos. Cuando este ajuste está activado (On) no se registrarán errores con mensajes repetidos de diferentes ficheros o líneas del código fuente.

report_memleaks boolean

Si este parámetro está activado (On), que es lo predeterminado, mostrará un informe de pérdidas de memoria detectado por el gestor de memoria Zend. Este informe será enviado a stderr en las plataformas Posix. En Windows, será enviado al depurador usando OutputDebugString(), y podrá ser visto con herramientas como » DbgView. Este parámetro solo tiene efecto en una versión de depuración, y si error_reporting incluye E_WARNING en la lista permitida.

track_errors boolean

Si está habilitado, el último mensaje de error siempre estará presente en la variable $php_errormsg.

html_errors boolean

Desactiva las etiquetas HTML en los mensajes de error. El nuevo formato para errores HTML producen mensajes clicables que dirigen al usuario a una página describiendo el error o a la función que causa el error. Estas referencias se ven afectadas por docref_root y docref_ext.

xmlrpc_errors boolean

Desactiva la notificación de errores normal y formatea los errores como mensajes de error XML-RPC.

xmlrpc_error_number integer

Usado como el valor del elemento faultCode de XML-RPC.

docref_root string

El nuevo formato de error contiene una referencia a una página que describe el error o a la función que causa el error. En caso de páginas de manual, se puede descargar el manual en su idioma y establecer esta directiva ini al URL de su copia local. Si a su copia local del manual se puede llegar mediante "/manual/" puede usar simplemente docref_root=/manual/. Además tiene que establecer docref_ext para que coincida con las extensiones de fichero de su copia docref_ext=.html. Es posbile usar referencias externas. Por ejemplo, se puede usar 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 será necesario que el valor de docref_root termine con una barra "/". Sin embargo, veáse el segundo ejemplo de antes, el cuál ni la tiene ni la necesita.

Nota:

Esta es una característica para ayudar al desarrollo, ya que hace más fácil buscar una descripción de una función. Sin embargo, nunca debería usarse en sistemas de producción (p.ej. en sistemas conectados a internet).

docref_ext string

Véase docref_root.

Nota:

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

error_prepend_string string

String a imprimir antes de un mensaje de error.

error_append_string string

String a imprimir después de un mensaje de error.

error_log string

Nombre del fichero donde los errores del script deberían ser registrados. El fichero debería ser modificable por el usuario del servidor web. Si se usa el valor especial syslog, los errores son enviados en su lugar al registro del sistema. En Unix, esto quiere decir syslog(3) y en Windows NT quiere decir el registro de sucesos. El registro de sistema no está admitido en Windows 95. Véase también: syslog(). Si esta directiva no está establecida, los errores se enviarán al registro de error de la SAPI. Por ejemplo, un registro de error en Apache o stderr en CLI. Véase también error_log().

add a note add a note

User Contributed Notes 4 notes

up
6
cjakeman at bcs dot org
5 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
-6
geompse at gmail dot com
3 years ago
Note that if error_log is empty, errors/warnings/notices will be written to stderr (standard error stream), and this may be a problem if you is PHP in CLI.

<?php
# test.php
error_reporting(E_ALL);
ini_set('display_errors','On');

ini_set('error_log','my_file.log');
foreach(
1 as $i);

ini_set('error_log','');
foreach(
1 as $i);

ini_set('error_log','/dev/null'); #linux
foreach(1 as $i);
?>

php -f test.php
will output :
<?
Warning
: Invalid argument supplied for foreach() in /test.php on line 7 # stdout
PHP WarningInvalid argument supplied for foreach() in /test.php on line 10 # stderr
Warning: Invalid argument supplied for foreach() in /test.php on line 10 # stdout
Warning: Invalid argument supplied for foreach() in /test.php on line 13 # stdout
?>

Errors displayed in the stdout (standard output stream) car be catched with the output buffering functions (ob_start/ob_get_clean) while strerr cannot.
up
-10
plonk at xonx dot de
3 years ago
When using PHP with Apache mod_fcgid and "log_errors = On", PHP errors get logged into Apache ErrorLog file with severity "warn". No matter what severity the PHP error itself has, the severity in the Apache log is "warn".
To log PHP errors in the Apache log, use:
LogLevel warn
(or debug, info, notice)
up
-13
ivanmaz at yandex dot ru
5 years ago
There is a more simple and more correct solution - to use file .htaccess, where you can simply add the following lines:

php_value display_errors 1
php_value display_startup_errors 1
To Top