Domanda

In una pagina che sto facendo le chiamate AJAX multipli. Tutte le chiamate restituiscono risposte con successo ma l'ultimo (non correlata ad altre chiamate Ajax) restituisce 500 errore interno del server come codice di risposta (come Firebug dice). Tuttavia, nonostante il codice di errore, contenuto corretto viene restituito da questa chiamata AJAX.

Con mio grande stupore, quando ho impostato l'opzione display_errors in php.ini come On, l'errore scompare e risposta nella resa sulla pagina. Ho la registrazione degli errori di installazione in un file, ma nessun errore viene registrato corrispondente all'errore server interno di cui sopra.

A proposito, sto usando Apache, JQuery, PHP5, APC (se è rilevante).

Nessuna soluzione corretta

Altri suggerimenti

La risposta più probabile, data la limitate informazioni disponibili, è che PHP sta raggiungendo un errore fatale dopo ha terminato echeggiando l'output previsto.

Per prova: nella linea che viene eseguito lo scorso, eco qualcosa. Se questo eco non si presenta, allora sapete che il vostro script PHP è arrestare qualche parte. A quel punto, è solo una questione di debug e tracciatura.

Questo è molto strano ... Si sta utilizzando un qualche tipo di biblioteca o altro codice che non hai scritto che potrebbero essere interessando il codice di stato intestazione indipendentemente dal reale valore restituito?

Ho avuto questo stesso problema esattamente, si è rivelato essere un errore fatale nascosta. Accendere display_errors, trovare l'errore, smash errore, spegnere display_errors (probabilmente meglio per mantenere display_errors avanti per lo sviluppo e la via in produzione).

L'interprete PHP si blocca semplicemente durante questa richiesta. So che uno dei motivi potenziale che potrebbe mandare in crash PHP:

A causa di alcuni bug nel GCC 4.3, PHP compilato con questa versione del compilatore l'attuazione delle eccezioni rotti. In alcuni casi non banali, un'eccezione dallo script provoca la segfault e l'esecuzione di script è terminato. La tesi è stata confermata dal team di PHP un paio di mesi fa.

Per verificare, se capita anche a voi, si può semplicemente verificare, in cui l'esecuzione di script si blocca e se succede subito dopo un'eccezione, sei a casa. Il controllo può essere fatto mettendo die() ulteriormente e futher nello script e vedere cosa succede. Un altro modo è quello di utilizzare declare(ticks=1) e registrare una funzione segno di spunta che salva l'ultima voce dalla debug_backtrace() al file ogni tick, in modo che si otterrà un report, come viene eseguito lo script.

Ho avuto problemi in qualche modo simile e il problema era che la sceneggiatura era generazione di eccezioni e non c'era blocco catch così l'eccezione sarebbe gorgogliare in superficie e errore fatale "eccezione non rilevata" successo. Quale è il comportamento standard di PHP, ma su un server particolare si dovrebbe anche ottenere il codice di risposta di 500 errore interno del server al posto di 200 OK. Rimozione delle eccezioni e la loro sostituzione con die () dichiarazioni Risolto il problema su quel server (potremmo fare che perché era semplice script che davvero non beneficiare delle eccezioni, in primo luogo)

Il problema è spesso risolto Ione di quanto segue. Controllare gli script autorizzazioni, diritti e la proprietà. Se tornato dopo una chiamata AJAX, verificare se non c'è un posto un errore fatale. Verificare se didn;. T accidentalmente uplaoded il file per Unix in modalità ASCII

Maggiori informazioni possono essere letta a http://www.larshemel.com/forum/500_internal_server_error

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top