Estoy realmente nuevo Zend, de unos días de uso.

Estoy recibiendo un mensaje de error fatal:

Fatal error: Uncaught exception 'Zend_Cache_Exception' con mensaje 'cache_dir "/home/[EDITADO]/aplicación/../data/tmp/" no es escribible' en /home/[EDITADO]/library/Zend/Cache.php:209 
Seguimiento de la pila: 
#0 /home/[EDITADO]/library/Zend/Cache/Backend/File.php(181): Zend_Cache::throwException('cache_dir "/hom...') 
#1 /home/[EDITADO]/library/Zend/Cache/Backend/File.php(129): Zend_Cache_Backend_File->setCacheDir('/home/usuario/Proj...') 
#2 /home/[EDITADO]/library/Zend/Cache.php(153): Zend_Cache_Backend_File->__construct(Matriz) 
#3 /home/[EDITADO]/library/Zend/Cache.php(94): Zend_Cache::_makeBackend('Archivo', Array, false, false) 
#4 /home/[EDITADO]/application/Bootstrap.php(42): Zend_Cache::factory('Core', 'Archivo', Array, Array) 
#5 /home/[EDITADO]/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initCache() 
#6 /home/[EDITADO]/library/Zend/Aplicaciones en /home/[EDITADO]/library/Zend/Cache.php la línea 209 

De acuerdo con el mensaje de error, yo esperaría una carpeta problema de permisos en el tmp directorio. El directorio es, sin embargo, se puede escribir:

[email protected][REDATCED]:~/[REDATCED] datos/$ ls -hal 
total de 24K 
drwxrwxr-x 6 de usuario usuario 4,0 K, 7 de enero 18:40 . 
drwxr-xr-x 12 de usuario 4,0 K Jan 9 12:50 .. 
drwxrwxr-x usuario 3 usuario 4,0 K Dez 17 11:42 configuraciones regionales 
drwxrwxr-x 2 usuario 4,0 K Dez 17 11:42 los registros de 
drwxrwxr-x 2 usuario 4,0 K Dez 17 11:42 sesiones 
drwxrwxr-x 2 usuario 4,0 K, 7 de enero 18:40 tmp 

La solución es comentar las siguientes líneas en application/Bootstrap.php:

 función protegida _initCache() { 
$frontendOptions = array( 
'tiempo de vida' => 7200, //cache duración de 2 horas 
'automatic_serialization' => true 
); 

$backendOptions = array( 
'cache_dir' => APPLICATION_PATH . '/../data/tmp/' //Directorio donde 
); 

//obtener un objeto Zend_Cache_Core 
$this->cache = Zend_Cache::factory('Core', 'Archivo', 
$frontendOptions, $backendOptions); 

Zend_Registry::set('cache', $this->caché); 

Zend_Date::setOptions(array( 
'caché' => $this->caché 
)); 

Esta solución fue sugerido por un compañero de trabajo, no tengo idea de qué estoy haciendo aquí, o incluso si este código es parte de Zend o nuestra base de código. No me gusta feo hacks, o «arreglar» cosas por comentar código, o hacer cualquier cosa sin saber lo que estoy haciendo, o la razón detrás de ella.

Además, el código parece estar trabajando en mis compañeros de trabajo de las máquinas. Y cada vez que me tire a sus validaciones de código desde el repositorio puedo obtener un sin comentar copia de todos modos.

Yo probablemente podría excluir el archivo desde el repositorio o algo por el estilo (soy nuevo en el git así), pero yo realmente prefiero:

  • Conocer la causa del error
  • Conocer la solución
  • El mensaje de error indica claramente que algunos de directorio o archivo no tiene permisos de escritura que generalmente apunta a problemas de permisos.
  • Sí, eso es correcto y de hecho fue el caso.
  • FYI, comentando el método en su último código de ejemplo que se desactivación de la inicialización de la memoria caché de objetos en la aplicación (que es lo que estaba tirando el error de permisos). Es probable que esto habría provocado problemas en otras partes de la aplicación (que sería error cuando trató de usar la ahora inexistente caché de recursos).
  • Gracias por tomar su tiempo para explicar esto, como ya he dicho estoy muy muy nueva Zend y no tienes mucha idea de cómo funcionan las cosas (para ser honesto, alguien que se acaba de instalar Zend y NetBeans en mi máquina y dijo: «aquí, lo uso»).

3 Comentarios

  1. 5

    Este error normalmente se produce debido a los permisos.

    Para resolver esto, si usted está usando apache como servidor web, asignar la propiedad a apache.

    En mi Fedora Core máquina lo resuelto por la simple emisión:

    chown my_current_name:apache -R /var/www/project_name 
    • Este es el modo más adecuado para resolver este problema, para los usuarios de linux. Trabajó en mi Fedora 20, gracias.
  2. 1

    Mientras estaba escribiendo esta pregunta me di cuenta de mi error, el tmp que sea escribible por mí y otros usuarios del mismo grupo, al parecer, Zend tendrá acceso a los archivos de otro usuario. La solución fue chmod 777 en la carpeta, haciendo de escritura.

    • o tal vez es que apache acessing los archivos como usuario de apache?
  3. 1

    Tenido el mismo problema, resuelto mediante un sencillo paso.
    lib>Zend>Caché>Backend>File.php
    encontrar esta línea

    protected $_options = array(
    'cache_dir' => 'null',

    Quitar la cita y dejarlo como

    protected $_options = array(
    'cache_dir' => null, 

    Realmente funcionó para mí.

Dejar respuesta

Please enter your comment!
Please enter your name here