2009-01-07 11 views
5

Estamos migrando a un nuevo servidor con Windows 2003 e IIS 6. Cuando se ejecuta mi código PHP, tiene una advertencia en una línea en particular (que estoy esperando en este momento pero lo arreglaré en breve). Sin embargo, cuando golpea la advertencia, detiene inmediatamente el procesamiento y devuelve un error 500 en el encabezado HTTP. Normalmente, esperaría que PHP emitiera la advertencia, pero continúe procesando el script.Advertencias de PHP provocan que la secuencia de comandos se detenga en IIS que ejecuta FastCGI

¿Hay algo en la configuración de IIS, FastCGI o PHP que devolverá 500 errores cuando PHP haga clic en una advertencia?

Para aclarar: No quiero suprimir las advertencias; Quiero que se muestren. No quiero que el script deje de procesar las advertencias.

Respuesta

10

Se ha solucionado el problema. log_errors en php.ini se estableció en On, pero error_log estaba desarmado. Esto estaba causando que PHP detenga todo. Después de configurar display_errors a on, las advertencias ahora se muestran para que pueda ver dónde están las cosas en la salida.

Este hilo ha sido útil: http://forums.iis.net/p/1146102/1856222.aspx#1856222

+0

Entonces, ¿qué se establece 'error_log' a? Por favor incluya eso en su respuesta para ayudar a otros. –

+0

¡Wow, eres un genio! – alexander7567

0

No sé sobre IIS o FastCGI, pero afaik php no tiene esa opción. Sin embargo, puede establecer error_reporting (en su php.ini) a

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

para hacer advertencias desaparecen.

0

Eso depende en gran medida de su código PHP también, si está haciendo algo complicado dentro del código y se produce un error, los servidores web a veces arrojan 500 errores. Yo te sugeriría:

  1. poner @ en la línea de suprimir el error, es decir:

    $ x = @ mi_funcion ($ y);

  2. Consulte los registros de su servidor web para obtener el mensaje de error exacto que recibe, luego publíquelo aquí y quizás podamos ofrecerle una mejor solución.

Cuestiones relacionadas