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.
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.
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
Donnez juste la bonne CHMOD
(776
me convient) à app/tmp
pour les utilisateurs de Windows avec la même erreur/avertissement: assurez-vous que vous exécutez la commande Invite en mode élevé;)