2010-05-02 6 views
8

Salut les gars, je travaille avec Zend framework et je déteste juste le fait que je semble rencontrer des centaines d'erreurs d'exception comme si j'essayais de référencer une propriété inexistante d'un objet. l'application meurt et se bloque. Cependant je n'ai aucune idée où voir ces erreurs ou comment pouvoir les afficher à l'écran. J'ai mis des erreurs d'affichage à vrai et rapport d'erreur à E_ALL mais quand une erreur est jetée tout ce que je vois est une page vide rendue seulement jusqu'à un peu avant où l'erreur s'est produite apparemment ou l'exception a été levée.Comment afficher les erreurs d'exception lancées par Zend framework

Aide s'il vous plaît mes heures de débogage trainent

Répondre

4

Quelle est la valeur de la variable d'environnement APPLICATION_ENV.

Le public/index.php standard dans une application ZF effectue les opérations suivantes:

// Define application environment 
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

Cela signifie que si aucun APPLICATION_ENV est défini, l'environnement est défini comme la "production". Si vous regardez votre fichier application.ini, vous verrez que le framework supprime les erreurs si l'environnement est en production.

Bien sûr, vous développez, donc vous voulez utiliser l'environnement 'développement'.

Si vous utilisez sous Apache/mod_php, vous pouvez définir dans votre httpd.conf, ou un fichier .htaccess:

SetEnv APPLICATION_ENV development 

Ou vous pouvez toujours obtenir laid et pirater loin à votre public/index.php:

// Define application environment 

/*defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));*/ 

// Ugly hack because I'm too lazy to properly set up my environment. 
define('APPLICATION_ENV','development'); 
+0

+1 pour la réponse simple et l'explication de ce qu'elle fait. Et cela fonctionne :) – Benj

+0

Merci de mentionner qu'il peut être défini dans httpd.conf! – Christian

1

Référencer une propriété non est une erreur existant en PHP, pas une exception. Les erreurs sont généralement dans la sortie du code HTML si vous activez display_errors dans votre fichier php.ini. Mais attention: ils peuvent aussi bien se produire dans une balise HTML invisible comme:

<div style="display:none"><? echo $object->nonexistant?> ... 

... donc vous devez vérifier la sortie HTML de votre page (CTRL-U dans Firefox) et faites défiler vers le bas

+0

Une exception est levée lorsque je tente d'accéder à une propriété non d'un objet existant, il semble. Y a-t-il un moyen de contourner ce problème étant donné que l'objet en question peut ou non avoir la propriété que j'ai l'intention de vérifier? – Ali

2

Si vous créez un squelette d'application avec l'outil Zend, vous aurez généralement un contrôleur d'erreur qui va attraper les erreurs d'exécution et les afficher. Vous aurez envie de suivre les conseils de timdev à SetEnv APPLICATION_ENV development puis, dans votre application/configs/application.ini:

[development : production] 

; This section defines config parameters loaded when the APPLICATION_ENV directive 
; is set to 'development' - undefined parameters are inherited from the production 
; section. 

; show errors and exceptions during development 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 
Questions connexes