6
votes

Erreur d'erreur occasionnelle lorsque CakePHP écrit dans le cache

Je développe un site CakePHP 2.2 localement avec MAMP. Chaque fois, je reçois un ou plusieurs avertissements similaires à cela, à propos de ne pas pouvoir écrire à un ou plusieurs fichiers de cache: xxx

la chose étrange est, / TMP est 777, TMP / Le cache est 777 et TMP / cache / persistant est 777 (ne vous inquiétez pas ... ce ne sera pas 777 sur le serveur!). Le fichier lui-même à l'intérieur du TMP / cache / persistant est de 644 - mais je suppose que le gâteau crée et gère ce fichier, et le fait avec les autorisations qu'il a besoin.

Si je viens de rafraîchir la page, l'erreur disparaît (puis re-apparaissent parfois plus tard). Je ne fais pas de mise en cache explicite, alors ce truc est juste un gâteau faire tout ce qu'il fait automatiquement.

Donc, ma question est la suivante:

a) Comment cette mise en cache automatique du travail de gâteau ? Essaie-t-il d'écrire dans ce fichier sur chaque page actualisée et d'échouer que de temps en temps? Ou est-ce que cela n'essaie que d'écrire dans ce fichier une fois de temps en temps, mais à chaque fois qu'il essaie?

B) Si cela ne fait que défaut une fois depuis un moment, puis-je simplement l'ignorer? Et si cela échoue chaque fois qu'il essaie, comment puis-je le réparer?

Merci d'avance pour toute aide!


2 commentaires

Pas beaucoup d'aide, mais j'en ai eu cela plusieurs fois moi-même. Malheureusement, je n'ai pas vraiment trouvé un moyen de corriger autre que Run sudo chmod -r 777 app / tmp quand je le rencontre.


J'ai eu cette question quand j'ai fait choke -r 0777 accidentellement heh


4 Réponses :


14
votes

Cela se produit probablement lorsqu'un processus différent de Apache Créez des fichiers dans le cache. Cela peut être le cas, par exemple lorsque vous exécutez des commandes shell comme vous le faites probablement comme un utilisateur différent de celui d'Apache.

Par défaut Le cache de fichier crée des fichiers avec des autorisations permettant uniquement l'utilisateur qui a créé l'utilisateur qui a créé les fichiers pour les modifier, mais Cela peut être corrigé en définissant un masque dans la configuration de cache dans core.php: xxx


5 commentaires

D'accord merci. Je ne peux pas imaginer quel processus autre que Apache modifierait ces fichiers, mais de toute façon. J'ai ajouté ce masque et je vais le surveiller au cours des prochains jours pour voir si cela fonctionne.


OK, cela semble fonctionner. Une note aux autres: vous devrez également supprimer les fichiers de cache existants, de sorte que le gâteau les re-crée avec 666 autorisations. Sinon, ils resteront juste avec 664 permission.


Hmm, la chose intéressante est que cela n'est pas dans l'API. Ce que j'ai précédemment utilisé pour résoudre ce problème est un script Bash simple qui appelle les consoles de gâteau que je dois exécuter, puis modifie les autorisations sur tous les fichiers dans app / tmp . Je vais déposer cela avec l'équipe de gâteaux.


Semble être le cas dans le gâteau 3 aussi


Un indice supplémentaire quelle est la différence de paramétrage du «masque» => 0666 est la suivante: si vous le définissez, les fichiers de cache ont lu et écrivent des autorisations pour l'utilisateur, le groupe et tous les autres utilisateurs (-RW-RW-RW). Si vous ne définissez pas l'option "Masque", seul l'utilisateur et le groupe ont l'autorisation de lecture et d'écriture, les autres utilisateurs ne peuvent lire que (-RW-RW-R--). Sans ce réglage du masque, vous obtenez des problèmes lorsque vous utilisez Cake Shell et que vous exécutez un autre utilisateur que l'utilisateur Apache est, par exemple, Pile de lampe Bitnami: Apache exécute en tant qu'utilisateur Daemon, Cake Shell est généralement en cours d'exécution en tant qu'utilisateur Bitnami.



1
votes

Si vous souhaitez éviter de donner un accès en lecture / écriture au "autre" groupe, consultez mon autre solution ici:

https://stackoverflow.com/a/18703956/385979


0 commentaires

0
votes

simple vraiment, en supposant et vous êtes un sudoer et votre nom d'utilisateur est MartinLutherking xxx

de cette façon, les commandes de la console de gâteau peuvent lire des fichiers de cache créés par Apache2, mais vous devrez peut-être faire l'inverse. Groupe Ajouter Pour que Www-Data puisse lire des fichiers de cache créés par Martinlutherking


0 commentaires

0
votes

Juste au cas où quelqu'un voit ceci et se demande comment cela fonctionne dans CakePHP 3.x:

Modifier /config/app.php et ajoutez 'masque' => 0666 < / code> à xxx

et vous souhaitez probablement l'ajouter aux fichiers journaux: xxx


0 commentaires