2009-07-29 16 views
22

Utilizzo Zend Framework e sto vivendo con questo problema per un po ', ma ora è diventato troppo fastidioso quindi ti invierò la domanda.Errori di visualizzazione php quando si utilizza il framework Zend

Ci sono alcuni problemi all'interno del framework Zend che Zend può riconoscere (come chiamare un controller inesistente) e invierà quel problema a ErrorController. Ho funzionato bene.

Sembra che ci siano alcuni problemi che Zend Framework fallirà e visualizzerà l'errore tramite php, come se una determinata funzione non esistesse o qualcosa del genere. Quelli che posso vedere e risolvere.

A volte, però, Zend non fallirà, ma invierà anche una risposta vuota. Avrò una pagina vuota. Il layout non viene visualizzato, non c'è il codice, non c'è niente per darmi un'idea di cosa è andato storto. L'ultima volta, c'è stato un require() che ha fallito. Dovevo capirlo manualmente senza feedback.

Qualcuno di voi ha sperimentato questo? Hai qualche consiglio su come mostrare questi errori? Qualsiasi aiuto sarebbe apprezzato!

risposta

31

La gestione interna degli errori delle componenti MVC del framework può solo intercettare eccezioni, non errori PHP.

Per facilitare il debug durante lo sviluppo, è possibile utilizzare lo standard:

error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 'on'); 

Inoltre, se si sta utilizzando il nuovo caricatore automatico incluso con 1.8, l'uso:

Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false); 

Per consentire fallito includere/richiedere dichiarazioni da rilasciare.

+0

Furono i suppressNotFoundWarnings che avevo perso. Grazie mille! Non hai idea di quanto tempo mi risparmia. – Ethan

+0

Questo è strano perché il manuale dice che ZF non esegue la soppressione degli errori di default: http://framework.zend.com/manual/1.12/en/zend.loader.autoloader.html –

12

Per altri imbattersi questa domanda: ho cambiato la seguente riga nel file di configurazione/Application.ini

resources.frontController.params.displayExceptions = 0 

A:

resources.frontController.params.displayExceptions = 1 

Questo mi ha permesso di vedere l'eccezione completo, compreso stacktrace.

7

Modificare il file public/index.php.
Cambia APPLICATION_ENV in "sviluppo".

In questo modo verranno utilizzate le impostazioni di sviluppo nel file dell'applicazione/configs/application.ini. Queste impostazioni definiscono se eliminare gli errori.

+0

Questa era la soluzione che funziona per me, Grazie! – leticia

11

Impostare questo nella configurazione:

phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 
+0

+1 Fantastico !!!!! Queste linee sono pura magia! Grazie! – diosney

+0

All'interno di quale file di configurazione? – rhand

+0

Modifica in => application/configs/config.php – Prabhagaran

1

Aprire urproject/application/config e aperto application.ini
Modificare la seconda linea:

phpSettings.display_errors = 0 

a

phpSettings.display_errors = 1 

Ora mostrerà errori.

5

È troppo tardi per rispondere a questa domanda ora. Ma spero che aiuti qualcun altro ...

Il posto giusto la seguente funzione nel file bootstrap.php per consentire eccezioni ..

protected function _initErrorDisplay(){ 
     $frontController = Zend_Controller_Front::getInstance(); 
     $frontController->throwExceptions(true); 
    } 
+0

Posso chiedere, cosa intendi con il tuo 'enable'? Sta registrando l'eccezione che non è stata registrata prima? O sta visualizzando l'eccezione nella vista dell'applicazione? – Stephane

1

decisione veloce e sporca, se nessuno dei metodi già menzionati lavorato (utile per la vecchia versione o brutto-configurato di ZF):

  • Trova ErrorController dell'applicazione.
  • mettere la chiamata della funzione debug_print_backtrace nella parte superiore del metodo init (con die() facoltativamente)
0

Per chiunque, per i quali le risposte qui riportati non hanno funzionato, si può sempre andare al log di Apache a vedere una descrizione del problema. Ovviamente sarebbe più comodo se questo fosse mostrato sulla pagina, ma trovo che sia un'alternativa accettabile.

/var/log/apache2/error.log 

Ho questo file aperto con vim e digitare: e per rinfrescare e G per andare in fondo alla pagina per vedere l'errore più recente quando ho la pagina vuota. Ti dice l'ora in cui si è verificato l'errore, il messaggio e la linea, quindi è piuttosto utile.

0

messo queste linee in applicazione/configs/config.php

error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 'on'); 
Problemi correlati