web-dev-qa-db-fra.com

Afficher les erreurs php lors de l'utilisation de Zend Framework

J'utilise Zend Framework et je ne fais que vivre avec ce problème depuis un moment, mais c'est maintenant devenu trop agaçant, alors je vais vous envoyer la question.

Il existe certains problèmes au sein de la structure Zend que Zend peut reconnaître (comme appeler un contrôleur inexistant) et enverra ce problème à ErrorController. Je travaille bien.

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

Parfois, cependant, Zend n'échouera pas, mais il enverra simplement une réponse vide. Je vais avoir une page blanche. Leur mise en page n'apparaît 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, il y avait un require () qui a échoué. Je devais le comprendre manuellement sans aucun retour.

Est-ce que l'un d'entre vous a vécu cela? Avez-vous des conseils sur la façon d’afficher ces erreurs? Toute aide serait appréciée!

24
Ethan

La gestion des erreurs internes des composants MVC de la structure peut uniquement intercepter des exceptions, pas les erreurs PHP.

Pour aider au débogage pendant le développement, vous pouvez utiliser la norme:

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

De plus, si vous utilisez le nouvel autochargeur fourni avec la version 1.8, utilisez:

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

Pour permettre l’échec de l’inclusion/de la soumission de déclarations.

32
jason

Pour les autres personnes rencontrant cette question: j'ai changé la ligne suivante dans configs/application.ini

resources.frontController.params.displayExceptions = 0

À:

resources.frontController.params.displayExceptions = 1

Cela m'a permis de voir la totalité de l'exception, y compris stacktrace.

12
Niels Bom

Définissez ceci dans votre configuration:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
11
Kamilos

Editez le fichier public/index.php.
Changez APPLICATION_ENV en '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.

8
Brian

Il est trop tard pour répondre à cette question maintenant. Mais espérons que cela aidera quelqu'un d'autre ...

Il suffit de placer la fonction suivante dans votre fichier Bootstrap.php pour activer les exceptions.

protected function _initErrorDisplay(){
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->throwExceptions(true);
    }
6
Jay Bhatt

Décision rapide et incorrecte, si aucune des méthodes déjà mentionnées ne fonctionne (utile pour les versions anciennes ou laides de ZF):

  • trouvez ErrorController de votre application.
  • place l'appel de la fonction debug_print_backtrace en haut de la méthode init (avec die () éventuellement)
1
Vasiliy Toporov

Ouvrez urproject/application/config et application.ini ouvert
Changer la deuxième ligne:

phpSettings.display_errors = 0 

à

phpSettings.display_errors = 1

Maintenant, il va afficher des erreurs.

1
piyush

Pour quiconque pour qui les réponses données ici n'ont pas fonctionné, on peut toujours consulter les journaux Apache pour voir une description du problème. Il serait bien sûr plus pratique que cela apparaisse sur la page, mais j’estime que c’est une alternative acceptable.

 /var/log/Apache2/error.log

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

0
grasshopper

mettre ces lignes dans application/configs/config.php

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