2009-11-17 6 views
5

Ho installato un'applicazione PHP su un server Web di hosting condiviso. Sto ottenendo un 500 Internal Server Error. Non sembra che abbia accesso a nessun file di registro, quindi vorrei che la pagina di errore fornisse temporaneamente i dettagli dell'errore.Come si visualizzano i dettagli di un errore interno del server PHP?

So come farlo in ASP.Net ma non sono così familiare con PHP.

risposta

16

prova:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

nella parte superiore del file.

+3

Controllare anche i permessi dei file. Spesso se un file non è eseguibile genererà un errore 500. –

-1

Un "Errore interno del server" non è un errore PHP (come dice il nome). Pertanto, si deve guardare i registri del server (a cui non si ha accesso, come sembra) o non si può fare nulla su di esso da PHP.

+2

-1, a seconda della configurazione del server e degli errori software del PHP possono essere presentati come 500 s. – Dereleased

+0

Corretto, infatti, per motivi di sicurezza molti host condivisi trasformano un errore di php in un 500 come parte di supression. –

+0

Ci scusiamo quindi. – Franz

2

Dubito che tu abbia ricevuto quell'errore da PHP. Nell'hosting condiviso è più probabile che la configurazione predefinita .htaccess dell'applicazione abbia causato l'errore.

La mia ipotesi sarebbe un mod_rewrite senza un set RewriteBase.

+0

Questo è del tutto possibile, e '.htaccess' è di solito il mio primo colpevole durante il debug, ma non ha mai detto che stava usando Apache. – Dereleased

+0

@Dereleased - PHP + SharedHosting, ho appena fatto i conti. Sarei sorpreso se fosse IIS. –

1

sguardo ai valori in phpinfo(); per vedere se qualcosa sporge ... metterlo da qualche parte nel codice e si dovrebbe visualizzare una serie di informazioni sulla versione di PHP

4

Se la soluzione di Jeremy Morgan non funziona, provare a creare il tuo file di registro utilizzando set_error_handler(). Di solito alcune informazioni sullo stato dell'applicazione ($ GLOBALS e così via) possono essere informazioni sufficienti, ma PHP (almeno cercherò di passare) ogni tipo di informazione su dove si è verificato l'errore e che tipo di errore è.

Inoltre, provare a utilizzare il metodo di debug "Divide And Conquer". Inizia con circa la metà del tuo file, quindi espandi verso l'alto se si blocca ancora o verso il basso se viene eseguito fino a quel momento. Se non si desidera rimuovere il codice, /* comment out */ il codice da tagliare o utilizzare la direttiva speciale __halt_compiler() per fare in modo che PHP ignori tutti i dati rimanenti nel file.

Infine, una cosa che mi ha fatto impazzire nel tentativo di risolverlo è quello che si chiama Byte Order Mark. PHP stava valutando quella BOM all'inizio del file, causandone l'invio e causando problemi durante il tentativo di inviare intestazioni e simili. Probabilmente non è quello che è il tuo problema, ma la conoscenza vale la pena avere.

+1

+1 per aver menzionato la BOM. – chelmertz

+1

un altro +1 per la BOM. Questo mi ha dato risvolti molto indietro quando ho iniziato! –