2009-07-29 6 views
22

J'utilise Zend Framework et je vis avec ce problème depuis un moment, mais il est devenu trop ennuyeux et je vais vous envoyer la question.Afficher les erreurs PHP lors de l'utilisation de Zend Framework

Il y a certains problèmes dans le framework Zend que Zend peut reconnaître (comme appeler un contrôleur inexistant), et cela enverra ce problème au ErrorController. Je travaille bien.

Il semble y avoir quelques problèmes que Zend Framework échouera et affichera l'erreur à travers php, comme si une certaine fonction n'existe pas ou quelque chose. Ceux que je peux voir et réparer.

Parfois, cependant, Zend n'échouera pas, mais il enverra également une réponse vide. Je vais obtenir une page blanche. Ils ne se présentent pas, il n'y a pas de code, il n'y a rien pour me donner une idée de ce qui ne va pas. La dernière fois, un require() a échoué. J'ai dû calculer manuellement cela sans aucun retour.

L'un de vous a-t-il déjà ressenti cela? Avez-vous des conseils sur la façon de montrer ces erreurs? Toute aide serait appréciée!

Répondre

31

La gestion des erreurs internes des composants MVC de l'infrastructure peut uniquement intercepter les exceptions, et non les erreurs PHP.

Pour faciliter le débogage au cours du développement, vous pouvez utiliser la norme:

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

De plus, si vous utilisez la nouvelle autochargeur inclus avec 1,8, utilisez:

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

Pour permettre Failed include/require les instructions à émettre.

+0

Ce sont les suppressNotFoundWarnings que j'avais manqué. Merci beaucoup! Vous n'avez aucune idée de combien de temps cela me sauve. – Ethan

+0

C'est étrange parce que le manuel dit que ZF ne supprime pas les erreurs par défaut: http://framework.zend.com/manual/1.12/en/zend.loader.autoloader.html –

12

Pour d'autres à venir à travers cette question: j'ai changé la ligne suivante dans configs/application.ini

resources.frontController.params.displayExceptions = 0 

Pour:

resources.frontController.params.displayExceptions = 1 

Cela m'a permis de voir la pleine exception, y compris stacktrace.

7

Modifier le fichier public/index.php.
Remplacez APPLICATION_ENV par 'développement'.

Cela utilisera les paramètres de développement dans votre fichier application/configs/application.ini. Ces paramètres définissent s'il faut supprimer les erreurs.

+0

C'est la solution qui fonctionne pour moi, Merci! – leticia

11

Set dans votre config:

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

+1 Impressionnant !!!!! Ces lignes sont de la magie pure! Merci! – diosney

+0

A l'intérieur quel fichier de configuration? – rhand

+0

Editer dans => application/configs/config.php – Prabhagaran

1

Ouvrir urproject/application/config et ouvrez application.ini
Modifier la deuxième ligne:

phpSettings.display_errors = 0 

à

phpSettings.display_errors = 1 

Maintenant affichera les erreurs.

5

Il est trop tard pour répondre à cette question maintenant. Mais j'espère que ça va aider quelqu'un d'autre ...

Il suffit de placer la fonction suivante dans votre fichier Bootstrap.php pour permettre des exceptions ..

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

Puis-je vous demander ce que vous voulez dire par "activer"? Consigne-t-il l'exception qui n'a pas été enregistrée auparavant? Ou est-ce qu'il affiche l'exception dans la vue de l'application? – Stephane

1

décision rapide et sale, si aucune des méthodes déjà mentionnées a travaillé (utile pour la version ancienne ou laid-configurée de ZF):

  • trouver ErrorController de votre application.
  • mettre l'appel de la fonction debug_print_backtrace en haut de la méthode d'initialisation (avec matrice() éventuellement)
0

Pour tous ceux pour qui les réponses données ici ne fonctionnent pas, on peut toujours aller dans les journaux apache à voir une description du problème. Ce serait bien sûr plus pratique si cela figurait sur la page, mais je trouve que c'est une alternative acceptable.

/var/log/apache2/error.log 

Je possède ce fichier ouvert avec vim et tapez: e pour rafraîchir et G pour aller au bas de la page pour voir l'erreur la plus récente quand je reçois la page blanche. Il vous indique l'heure à laquelle l'erreur s'est produite, le message et la ligne, donc c'est très utile.

0

mettre ces lignes en application/configs/config.php

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