2009-01-07 8 views
5

Stiamo migrando su un nuovo server con Windows 2003 e IIS 6. Quando il mio codice PHP viene eseguito, ha un avvertimento su una particolare linea (che mi aspetto al momento ma si risolverà a breve). Tuttavia, quando colpisce l'avviso, interrompe immediatamente l'elaborazione e restituisce un errore 500 nell'intestazione HTTP. Normalmente, mi aspetterei che PHP emetta l'avviso, ma continui ad elaborare lo script.Gli avvisi PHP causano l'arresto di script su IIS in esecuzione FastCGI

Esiste qualcosa nella configurazione per IIS, FastCGI o PHP che restituirebbe 500 errori quando PHP visualizza un avviso?

Per chiarire: Non voglio sopprimere gli avvisi; Voglio che vengano visualizzati. Non voglio che lo script interrompa l'elaborazione in caso di avvisi.

risposta

10

Calcolato il problema. log_errors in php.ini è stato impostato su On, ma error_log non è stato impostato. Ciò stava causando a PHP di fermare tutto. Dopo aver impostato display_errors su on, gli avvisi ora vengono visualizzati in modo da poter vedere dove si verificano errori nell'output.

Questo thread è stato utile: http://forums.iis.net/p/1146102/1856222.aspx#1856222

+0

Allora, che si fa a impostare 'error_log' a? Per favore includilo nella tua risposta per aiutare gli altri. –

+0

Wow your a genius! – alexander7567

0

Non so IIS o FastCGI, ma afaik php non ha questa opzione. È tuttavia possibile impostare error_reporting (nel vostro php.ini) per

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

per fare andare via le avvertenze.

0

Ciò dipende molto anche dal codice PHP, se si sta facendo qualcosa di complicato all'interno del codice e si verifica un errore, i server Web a volte generano 500 errori. Vorrei suggerire:

  1. porre @ sulla linea per sopprimere l'errore, cioè:

    $ x = @ my_function ($ y);

  2. Vedere i log del server Web per il messaggio di errore esatto che si ottiene, quindi pubblicarlo qui e forse potremmo offrire una soluzione migliore.