Apache Fallback quando PHP fallisce
-
09-06-2019 - |
Domanda
Mi chiedevo se qualcuno conoscesse un metodo per configurare Apache in modo che ritorni a restituire una pagina HTML statica, dovrebbe (Apache) essere in grado di determinare che PHP è morto?Ciò fornirebbe allo sviluppatore una soluzione elegante per visualizzare una pagina di errore e non (scenario peggiore) il codice sorgente della pagina PHP che avrebbe dovuto essere eseguita.
Grazie.
Soluzione
Il codice sorgente PHP viene visualizzato solo quando Apache non è configurato correttamente per gestire i file php.Cioè, quando non è stato definito un gestore adeguato.
In caso di errori, ciò che viene mostrato può essere configurato su php.ini, principalmente la variabile display_errors.Dovrebbe essere impostato su off e log_errors su on in un ambiente di produzione.
Se php muore effettivamente, Apache restituirà il codice di stato HTTP appropriato (solitamente 500) con la pagina definita dalla direttiva ErrorDocument.Se non è morto, ma è rimasto bloccato in un loop, per quanto ne so non c'è molto che puoi fare.
È possibile specificare una pagina diversa per codici di errore diversi.
Altri suggerimenti
Presumo che questo in genere si traduca in un errore 500 e puoi configurare il gestore Apache 500 per mostrare una pagina statica:
ErrorDocument 500 /500error.html
Puoi anche leggere informazioni sui gestori degli errori su sito di documentazione di Apache
Il vero problema è che gli errori irreversibili di PHP non fanno sì che Apache restituisca un codice 500.Errori tranne E_FATAL
E E_PARSE
può essere gestito come preferisci set_error_handler()
.
Esistono 2 modi per utilizzare PHP e Apache.
1. Install PHP as an Apache module: this way the PHP execution is a thread inside the apache process. So if PHP execution fails, then Apache process fails too. there is no fallback strategy.
2. Install PHP as a CGI script handler: this way Apache will start a new PHP process for each request. If the PHP execution fails, then Apache will know that, and there might be a way to handle the error.
indipendentemente dal modo in cui installi PHP, quando l'esecuzione di PHP fallisce puoi gestire gli errori nel file php.ini
file.