web-dev-qa-db-fra.com

CakePHP 2.0 - Cake n'a pas pu écrire dans le cache de fichiers

J'utilise CakePHP 2.0 RC-1. Après avoir extrait le projet de SVN, l’application commence à se plaindre de ne pas pouvoir écrire les fichiers de cache dans le répertoire tmp/cache. Comme c'est local, je sais que le répertoire est accessible en écriture et je peux CLAIREMENT voir que les répertoires sont même remplis de fichiers, donc l'erreur est un peu étrange.

Voici quelques-unes des erreurs que j'ai rencontrées:

_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]

Pas d'erreur?! Avec

Maintenant, si je regarde dans le fichier FileEngine, à la ligne 127, on lit:

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

En remplaçant le "c" par "w", aucune erreur n'est rencontrée et tout fonctionne comme il se doit. Mais, il ne devrait pas être nécessaire de modifier les bibliothèques de base de Cake pour contourner ce problème. Permettez-moi de répéter que sur mon autre ordinateur, cela fonctionne comme prévu, sans modifier la bibliothèque principale. Les deux utilisent le système d'exploitation Windows et les droits de lecture/écriture sur le dossier tmp/cache-folder sont exactement les mêmes.

Edit: Voici un site qui rencontre les erreurs que je rencontre localement 

Exemple de site trouvé par Google. Pas mon site: http://www.12h30.net/credit/

Aucune suggestion?

Mise à jour: Voici pourquoi: Cela est dû au fait que votre version de PHP est trop basse, avant la 5.2.6, comme indiqué par "api55" dans les commentaires. Merci pour la réponse. J'espère que ça va t'aider aussi.

17
Coreus

Eh bien, dans mon cas, lorsque j'ai vérifié mon application, elle ne contenait pas le dossier /tmp. Ensuite, j'ai créé la structure (/tmp/cache/models, /tmp/cache/persistent) et tout a bien fonctionné. Cela m'est arrivé peut-être que git ignore les dossiers vides, ils n'ont donc pas été créés.

24
Shad

J'ai eu un problème similaire, c'est parce que j'avais chown -R www dans le répertoire app/tmp pour que Cake s'exécute "correctement" sans que tout le monde ait le droit d'écrire. Il semble que pendant le développement, la seule façon d'utiliser la console et le Web est d'octroyer des privilèges d'écriture à tout le monde, ou de vous ajouter peut-être au groupe www. 

Solution facile:

chmod -R 777 app/tmp

ou

chown -R nom d'utilisateur app/tmp 

en utilisant la console et 

chown -R www app/tmp

en utilisant le web

17
Ian Will

Donnez juste la bonne CHMOD (776 me convient) à app/tmp

2
user982872

pour les utilisateurs de Windows avec la même erreur/avertissement: assurez-vous que vous exécutez la commande Invite en mode élevé;) 

0
user1690294