2011-12-19 10 views
6

Occasionalmente avrò un codice PHP mal formato e otterrò un errore 500. Sto eseguendo Apache 2.2 su un laptop Windows 7. Come IDE ho iniziato a utilizzare PhpStorm.PHP 5.3 - Risoluzione dei problemi 500 Errori - Debug - Errori di errore

Qual è il modo migliore per rilevare questi errori ed essere informati del numero di riga? Perché gli errori di sintassi relativi a OOP tendono a generare 500 errori e i problemi di funzionamento tendono a restituire errori normali?

Esempio di errore di sintassi: chiamare un metodo statico da una classe con un singolo due punti anziché due punti.

UPDATE: Si veda risposta accettata e tutti i commenti.

+0

Non sono sicuro di cosa si intende per "errori normali"? Se il codice non viene analizzato a causa di un errore di sintassi, mi aspetto un 500 dal server Web con i dettagli degli errori di compilazione nei registri (non nel display per l'utente). – David

risposta

12

PHP risponderà con un "500" quando incontra un errore irreversibile, ad esempio E_PARSE, E_ERROR e eccezioni non rilevate. 500 è il codice di risposta HTTP per "Errore interno del server": è accaduto qualcosa di irrecuperabile durante l'elaborazione della richiesta.

Nel tuo php.ini, su una macchina di sviluppo, è necessario impostare il livello di error_reporting per (almeno) E_NOTICE - preferibilmente E_ALL - e assicurarsi display_errors è in. Questo ti mostrerà il messaggio di errore nel browser, inclusi gli errori "500".

È anche possibile controllare i log degli errori di Apache, gli errori verranno elencati qui, purché log_errors sia abilitato in php.ini. Per impostazione predefinita, questo sarà a <apache_ServerRoot>\logs\error.log.

È anche possibile controllare tutto questo in fase di esecuzione con ini_set() e error_reporting()

+0

Questa situazione statica deve essere un errore E_PARSE. È stato così difficile trovare il problema - stavo pensando che ci deve essere un modo migliore. – BuddyJoe

+0

Hai attivato error_reporting. +1 e fuso orario impostato. – BuddyJoe

+0

@brunot se non vedi i messaggi con 'error_reporting' on, è probabile che' display_errors' sia disattivato. Ci sono situazioni in cui il messaggio di errore non verrà emesso, ma questo è davvero solo se qualcosa è andato storto con PHP internamente e si è bloccato. Quando ciò accade, di solito c'è un messaggio nei log di Apache che ti dice * che * è successo, sebbene il debug * perché * sia successo può essere davvero molto difficile. In questa situazione, l'esecuzione dello script dalla riga di comando * a volte * consente di ottenere un utile messaggio di errore, ma non sempre. – DaveRandom

Problemi correlati