Come posso visualizzare e registrare errori PHP su IIS7?


29

Stiamo eseguendo PHP 5.2.5 su un server IIS 7 e riscontriamo problemi nel rendere visibili gli errori PHP ... Al momento, ogni volta che si verifica un errore PHP, il server restituisce un errore 500 con il messaggio "La pagina non può essere visualizzato perché si è verificato un errore interno del server. "

Questa potrebbe essere una buona impostazione per i siti Web di produzione, ma è piuttosto fastidiosa su un server di sviluppo ... ;-)

Ho provato a configurare php.iniper visualizzare gli errori sullo schermo e per registrarli in una cartella specifica, ma sembra che il Server rilevi tutti gli errori prima e prevenga e gestisca da PHP ...

Qualcuno sa cosa dobbiamo fare per fare in modo che IIS visualizzi gli errori PHP sullo schermo? Qualsiasi link, suggerimento o tutorial sull'argomento sarebbe apprezzato!


In primo luogo, assicurarsi di avere questi: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier,

ini_set("display_errors", "on");aggiungi queste righe nel file php.
ELITE,

Risposte:


35

Solo per ricontrollare, la registrazione è impostata su error_reporting = E_ALLe display_errors = Onnel tuo php.ini? Di solito questo è sufficiente per visualizzare questi errori in IIS 7.

Successivamente, dai un'occhiata alle tue impostazioni IIS, in quanto potrebbe essere impostato per mostrare solo i messaggi di errore localmente. Nell'editor di configurazione di IIS 7 questo è in system.webServer-> httpErrors. Sarà necessario modificare la modalità errore in Dettagliata da DettagliatoLocalOnly. Ovviamente questo ora significa che chiunque navighi nel tuo sito sarà in grado di vedere l'errore.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

In alternativa, se si desidera mantenerli locali, è possibile utilizzare Desktop remoto per accedere al server ed eseguire l'app da lì, se possibile.


1
Sì, ho controllato e tutto è configurato correttamente.
Ben

Aggiunte altre informazioni sulla risoluzione dei problemi
Sam Cogan,

1
Cambiare la modalità errore in "Dettagliato" da "DettagliatoLocalOnly" ha funzionato. Grazie!
Ben

1
Ho dovuto rimuovere anche la raccolta di errori HTTP in system.webServer. Non ha funzionato con PHP fino a quando non l'ho fatto.

1
Si prega di evidenziarlo system.webServercon il mio sangue e aggiungere la nota: "Sì, c'è una combinazione".
DiGi,

2

Volevo solo aggiungere che "esistentiResponse" dovrebbe essere impostato su "PassThrough". Non ho ricevuto alcun messaggio di errore reale senza quell'impostazione aggiuntiva.


1
Dove si trova questa impostazione?
Eugene Mala,

0

Puoi farlo facilmente utilizzando la GUI di IIS Manager. Seleziona il tuo sito e fai doppio clic su Pagine di errore. Quindi seleziona "Modifica impostazioni funzionalità ..." e seleziona l'opzione "errori dettagliati" anziché "errori dettagliati predefiniti per richieste locali e pagine di errore personalizzate per richieste remote". Voilà, così semplice!


Dove possono essere visualizzati i registri e gli errori?
JukEboX,

0

Ho dovuto andare nelle impostazioni sul server web in configurazione php e c'è un'impostazione lì per la segnalazione degli errori ed è impostato sulla produzione per impostazione predefinita. Ho dovuto cambiarlo in sviluppo anche dopo aver cambiato php.ini e il suggerimento qui. Sto usando iis 7.5 su 2008 R2.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.