2010-05-02 22 views
8

Hola chicos, estoy trabajando con Zend Framework y odio el hecho de que parezco encontrar cientos de errores de excepción como si trato de hacer referencia a una propiedad inexistente de un objeto. la aplicación simplemente muere y se cuelga. Sin embargo, no tengo idea de dónde ver estos errores o cómo poder mostrarlos en la pantalla. Establecí los errores de visualización en verdadero y el informe de error en E_ALL, pero cuando se produce un error, todo lo que veo es una página en blanco representada solo hasta un bit anterior donde aparentemente se produjo el error o se lanzó la excepción.¿Cómo puedo mostrar errores de excepción arrojados por Zend framework?

Ayuda por favor mis horas de depuración están arrastrando

Respuesta

4

Cuál es el valor de la variable de entorno APPLICATION_ENV.

El público/index.php estándar en una aplicación de ZF hace lo siguiente:

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

Esto significa que si no se establece ningún APPLICATION_ENV, el medio ambiente se establece como "producción". Si observa su archivo application.ini, verá que el marco suprime los errores si el entorno está en producción.

Por supuesto, está en desarrollo, por lo que desea utilizar el entorno de 'desarrollo'.

Si está ejecutando bajo Apache/mod_php, puede configurar esto en su httpd.conf, o un archivo .htaccess:

SetEnv APPLICATION_ENV development 

O siempre se puede poner feo y cortar lejos a su público/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 por la respuesta simple y la explicación de lo que hace. Y funciona :) – Benj

+0

¡Gracias por mencionarlo se puede configurar en httpd.conf! – Christian

1

referencia a una propiedad inexistente es un error en PHP y no una excepción. Los errores generalmente están en el resultado del html si habilita display_errors en su php.ini. Pero cuidado: que así pueden ocurrir dentro de una etiqueta HTML invisible como:

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

... por lo que necesita para comprobar la salida HTML de su página (CTRL-T en Firefox), y vaya a la parte inferior

+0

Una excepción al intentar acceder a una propiedad inexistente de un objeto que parece. ¿Hay alguna forma de evitar esto teniendo en cuenta que el objeto en cuestión puede tener o no la propiedad que pretendo verificar? – Ali

2

Si crea un esqueleto de la aplicación con la herramienta de Zend, podrás tienen típicamente un controlador de error que se captura los errores de ejecución y mostrarlos. Usted querrá seguir el consejo de timdev a SetEnv APPLICATION_ENV development y luego, en su aplicación/configs/application.ini: se está lanzando

[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