2010-09-29 11 views
10

Tengo PHP 5.2.10 y PHP 5.2.14 (x86 compilaciones Win32 no con hilos de rosca) instalados en un servidor Windows 2008 R2 y en Windows 7 de 64 bits.¿Por qué PHP 5.2.14 no mostrará ningún error (ni siquiera desde la línea de comandos)?

Por alguna razón, PHP 5.2.14 se niega a mostrar los mensajes de error.

Incluso cuando me puse los siguientes ajustes en php.ini que no entiendo los errores que aparezcan si uso 5.2.14:

error_reporting = E_ALL 
display_errors = On 

Esto ocurre incluso cuando se ejecuta un script de prueba desde la línea de comandos usando php.exe con un error de sintaxis deliberada:

c:\php>php test.php

PHP está usando el archivo correcto php.ini porque puedo ver cambiar mi configuración cuando corro php.exe -i.

También noté que php.exe en PHP 5.2.14 es muy lento para arrancar.

Cuando realizo el mismo conjunto de pruebas usando PHP 5.2.10 en las mismas máquinas recibo mensajes de error informados muy bien.

Tanto de los archivos php.ini es acción (con sede fuera de php.ini-recommended) pero con la configuración error_reporting y display_errors modificados.

Respuesta

5

Es posible que tenga que habilitar display_startup_errors así:

display_startup_errors boolean 

Even when display_errors is on, errors that occur during PHP's startup sequence are not displayed. It's strongly recommended to keep display_startup_errors off, except for debugging.

También puede tratar de pelusa el archivo con c:\php>php -l test.php para detectar errores de sintaxis.

+0

se aprende algo nuevo todos los días. Resulta que PHP no pudo cargar la extensión SQLite3 porque la extensión pdo.dll (tiene una dependencia en esto) no se ha descomentando. Con 'display_startup_errors' desactivado, esto pareció provocar errores de análisis. Muchas gracias. – Kev

+0

En realidad ... investigando más. Alguien ha puesto comillas alrededor del valor de los indicadores 'error_reporting'. Esa es la verdadera causa. es decir -'error_reporting = "E_ALL y ~ E_NOTICE" '. – Kev

3

últimamente, tuve que trabajar en el proyecto de otra persona ... Al no poder depurar, no tuve más remedio que verificar esto: "error_reporting (0);"

Por lo tanto, verifique su código fuente. Busque algo como esto: "error_reporting (0);". ¡Una vez que lo haya encontrado, coméntelo!

Normalmente, no tiene que poner eso en el código fuente, sino en php.ini.

@ +

+0

Mejor aún, agregue una forma de apagarlo durante (y solo durante) el desarrollo. Esos mensajes de error pueden decirles a los posibles piratas informáticos mucho sobre su servidor. – EpicVoyage

8

estoy corriendo un PHP después (5.4.24), pero estas otras respuestas carecen de la -d option I found exemplified elsewhere que hace de pantalla PHP errores de análisis inteligible cuando se ejecuta desde la CLI:

php -d display_errors test.php 

Esta es la mejor respuesta a la pregunta que estaba buscando en Google. Ejecución de la desfibradora con -l sólo se dice que "los errores de análisis foo.php"

+2

Utilizo esto como un alias 'alias phprun =" php -d display_errors "' –

11

He encontrado que esto realmente molesto, así que aquí tiene una estrategia para el control de la sintaxis de la CLI:

  1. No cargue el archivo ini .
  2. Active display_errors y display_startup_errors explícitamente.

php -n -l -d display_errors -d display_startup_errors path/to/your/phpfile.php

$ php -h 
-n    No php.ini file will be used 
-l    lint, syntax checking only 
-d foo[=bar]  Define INI entry foo with value 'bar' 
+0

hay un pequeño error de tipeo en el indicador display_errors, a pesar de que esta es la mejor respuesta – ROLO

Cuestiones relacionadas