2011-09-28 15 views
17

Estoy usando CakePHP 2.0 RC-1. Después de verificar el proyecto desde SVN, la aplicación comienza a quejarse de que no puede escribir archivos de caché en el directorio tmp/cache. Como esto es local, sé que el directorio es grabable y puedo VER CLARAMENTE que los directorios están llenos de archivos, por lo que el error es un poco extraño.CakePHP 2.0 - Cake no pudo escribir en el caché de archivos

Éstos son algunos de los errores que he encontrado:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache 

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127] 

Sin error ?! ¿Con qué?

Ahora, si miro en el archivo FileEngine, en la línea 127 se lee:

if (!$handle = fopen($this->_File->getPathName(), 'c')) { 
      return false; 
} 

Mediante la sustitución de la "c" con "w", no se encuentra ningún error y todo funciona como debería. Sin embargo, no debería ser necesario modificar las bibliotecas básicas de Cake para evitar este problema. Permítanme repetir eso en mi otra computadora, esto funciona según lo previsto, sin editar la biblioteca principal. Ambos usan el sistema operativo Windows y los derechos de lectura/escritura de la carpeta tmp/cache son exactamente iguales.

Editar: Aquí hay un sitio que experimenta las salidas de error que estoy teniendo localmente

sitio Ejemplo encontrado buscando en Google. No es mi sitio: http://www.12h30.net/credit/

¿Alguna sugerencia?

Actualización: Esta es la razón por la cual: Esto se produce si tiene una versión de PHP que es demasiado baja, antes de 5.2.6, como se indica en "api55" en los comentarios. Gracias por la respuesta. Espero que esto le ayude también.

+2

¿Qué versión de php tienes? recuerde que 2.0 todavía está en la etapa RC, por lo que puede tener este tipo de errores ... para el modo c o c + usted NECESITA tener php 5.2.6 o posterior si no lo hace no reconocerá ese modo – api55

Respuesta

1

Sólo dar el derecho CHMOD (776 funciona bien para mí) a app/tmp

23

Bueno, en mi caso, cuando me registré mi aplicación, no tenía la carpeta /tmp. Luego creé la estructura (/tmp/cache/models, /tmp/cache/persistent) y todo funcionó bien. Esto me pasó a mí, tal vez ignore las carpetas vacías, por lo que no fueron creadas.

+1

De hecho, la versión los sistemas de control a menudo ignoran las carpetas vacías. – Alfabravo

+0

Esta es la respuesta correcta, funcionó para mí. –

17

Tuve un problema similar, fue porque tuve chown -R www en el directorio de la aplicación/tmp para que Cake se ejecutara "correctamente" sin dar a todos los privilegios de escritura. Parece que durante el desarrollo, la única forma de usar la consola y la web es otorgar privilegios de escritura a todos, o agregarse al grupo www quizás.

solución fácil:

chmod -R 777 app/tmp

o

chown -R nombre de usuario app/tmp

durante el uso de la consola y

chown -R www app/tmp

al utilizar la web

+0

me salvó ... –

+9

chmod 777 nunca es la respuesta a nada, ¡esto es completamente incorrecto e inseguro! –

0

para los usuarios de Windows con el mismo error/advertencia: asegúrese de ejecutar el símbolo del sistema en modo elevado;)

Cuestiones relacionadas