web-dev-qa-db-fra.com

drush cc all! = "Vider tous les caches"

Si j'essaie de vider le cache de mon site drupal à l'aide de la commande drush cc all - la commande se termine avec succès, mais lorsque je lance mon site drupal dans un navigateur, c'est un désordre mutilé car il n'y a pas de CSS.

Alors que si je me connecte à mon site en tant qu'administrateur, allez dans "Vider tous les caches", mon site fonctionne très bien.

Ceci est discuté brièvement ici: http://dnotes.net/blog/dark-side-drop/david/why-all-my-css-gone-drush-cc

Bien que je ne vois pas vraiment de solution.

Je pense que le problème sous-jacent est que drush cc all ne recrée pas MOINS les fichiers CSS mais que "Flush All Caches" l'est? Existe-t-il un moyen de faire recréer les fichiers MOINS après l'effacement du cache?

Merci Brad

6
Brad

Vider le cache via l'interface utilisateur et via drush finit par appeler drupal_flush_all_caches() , mais il y a une différence subtile.

Lorsque vous exécutez à partir de l'interface utilisateur, le PHP s'exécute en tant qu'Apache (ou selon la configuration de votre serveur Web). Lorsque vous exécutez depuis drush, il s'exécute en tant qu'utilisateur qui a exécuté la commande.

Le problème dans votre cas est que le module LESS exécutera ses fonctions cron, ce qui efface le moins de répertoires dans sites/default/files et en crée un nouveau. Lorsque cela se produit, il y a souvent un problème d'autorisation: votre utilisateur drush possède le répertoire less et Apache ne peut pas y écrire. Par conséquent, vos fichiers CSS ne sont pas régénérés et votre site se retrouve sans style.

Ma solution est de m'assurer que mon utilisateur drush est également dans le groupe Apache sur mon serveur, et que mon répertoire sites/default/files a 2775 autorisations dessus et que Apache en est le propriétaire: apache. Je m'assure également que le mask de httpd rend le groupe de choses accessible en écriture.

Cela garantit que tous les fichiers et répertoires créés sont toujours la propriété du groupe par Apache et qu'Apache peut écrire dans tous les répertoires créés, indépendamment du fait qu'ils aient été effectués par httpd ou à partir de la ligne de commande.

ÉDITER:

Il y a encore une différence à noter. Lorsque vous effacez avec drush, vous effacez simplement les caches. Lorsque vous effacez l'interface utilisateur, vous effacez les caches, puis la page se recharge. Lorsque la page se recharge à partir d'un cache froid, les parties utilisées pour reconstruire cette page sont à nouveau mises en cache. Cela comprend la création de fichiers CSS à partir des sources MOINS.

16
mpdonadio

Vous pouvez utiliser la branche 3.0, actuellement 7.x-3.0-rc1.

La version 3.0 via Drush supprime uniquement les répertoires lors de la suppression du cache et ne les recrée pas, évitant ainsi le problème de Drush s'exécutant sous un autre utilisateur que le serveur Web.

Les répertoires sont créés à la demande par le module LESS, donc uniquement lorsqu'un utilisateur demande une page via le serveur Web, de sorte que les répertoires sont créés sous l'utilisateur du serveur Web.

Une version complète 7.x-3.0 sortira bientôt (j'espère cette semaine).

1
corey.aufang