Problème de suppression intempestive de CSS

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Salut à tous,

j'ai un soucis avec Drupal qui me supprime mes CSS stockées dans un répertoire css/ à la racine de l'installation lorsque je désactive un module.
J'ai résolu le problème en supprimant les droits en écriture pour le répertoire mais c'est pénible lors des mises à jour.
Quelqu'un a-t-il eu quelque chose de similaire et résolu le problème ?
Merci
Dom

Forum : 
Version de Drupal : 

Je crois que le premier point c'est pourquoi as tu des css à cet endroit là ?
Comme n'importe quel autre fichier additionnel (.css, .js, .tpl.php...), ces fichiers sont a priori "rattachés" à quelque chose (un module ou un thème) - tu devrais logiquement les garder dans le dossier de ton module ou de ton thème. les mettre ailleurs va à l'encontre de la modularité de ton site.

Le comportement que tu décris me paraît plutôt bizarre... Pourquoi Drupal chercherait-il à effacer les fichiers d'un répertoire dont il n'a pas l'usage ?

D'autant qu'un tel comportement rendrait impossible l'installation de logiciels non liés à Drupal sur le même serveur (ce qui est mon cas).

Comment en es-tu venu à la conclusion que c'était Drupal qui supprimait les fichiers de ce répertoire ?

La reponse est relativement simple.
Drupal 5 est dote d'une nouvelle fonctionalite, le "CSS preprocessor" qui permet de condense tous les fichiers CSS des modules actifs (desormais chaque module a son propre fichier CSS pour simplifier l'ecriture d'un theme). Ce preprocesseur creer donc un repertoires files/css dans lequel il stocke ce fameux "condense" de CSS.

Apres lorsque tu installes/desinstalles un module, il faut qu'il mette a jour le(s) fichier(s) *.css qu'il a stocke a cet endroit, donc il efface tout et regenere son fichier...

La solution: ne pas mettre tes CSS dans files/css c'est un repertoire que Drupal considere sien et donc fait ce qu'il en veut ;)

Ça me paraîtrait tout à fait logique s'il s'agissait bien de files/css. Mais chdom a précisé que son répertoire css se trouvait à la racine de son installation et non dans le répertoire files.

Il est toujours possible que chdom se soit emmêlé les pinceaux dans la description de son problème.

Le probleme c'est que si par defaut on precise que le repertoire "files" est "." du coup ca va creer le repertoire CSS a la racine du site, par contre a mon avis c'est vraiment pas une bonne pratique.

Ceci dit j'avais fait le test en local en mettant un repertoire CSS a la racine de Drupal et il n'etait pas efface lors de la modification des modules, c'est pour ca que je pensais que son repertoire etait sous "files"...

D'ailleurs si on regarde la fonction d'effacement

<?php
function drupal_clear_css_cache() {
 
file_scan_directory(file_create_path('css'), '.*', array('.', '..', 'CVS'), 'file_delete', TRUE);
}
?>

le file_create_path('css') retourne bien le bon chemin.

Le probleme c'est que si par defaut on precise que le repertoire "files" est "." du coup ca va creer le repertoire CSS a la racine du site, par contre a mon avis c'est vraiment pas une bonne pratique.
Tout à fait d'accord. Je trouve d'ailleurs ça bizarre que Drupal autorise ce genre de comportement, il suffirait d'uploader un fichier index.php et boum ! plus de site...

Par contre, il ne faut pas que le répertoire files ait certains droits pour que Drupal l'accepte ?

Par contre, il ne faut pas que le répertoire files ait certains droits pour que Drupal l'accepte ?
A priori il ne verifie pas ca lors du changement de repertoire.
Tu peux voir ca en mettant "." au lieu de files et il ne va pas broncher...

Par contre pour le coup de l'upload d'un index.php, par defaut les fichiers php sont interdits d'upload (bcp trop dangereux de tolerer ce genre de fichiers)...

Merci à tous pour vos messages. Je confirme bien que le répertoire css est à la racine du site et non pas dans files/. Pourquoi cette architecture , me direz-vous ? parce que j'ai écrit un thème et que le thème appelle ces CSS, tout simplement si j'ose dire. Je suis toujours pas plus avancé. En fait le comportement ne s'opère pas en dev local (sur Windows) mais en ligne (sur linux). Je suis complètement perdu. La seule façon d'éviter les soucis a été de changer les droits d'accès au répertoire. Drupal ne pouvant plus les supprimer il remonte l'erreur. Je vais jeter un oeil sur ce CSS preprocessor

Merci à tous pour vos messages. Je confirme bien que le répertoire css est à la racine du site et non pas dans files/.
Pourrais-tu vérifier dans admin/settings, Paramètres du système de fichiers, que le chemin du système de fichiers est bien 'files' et non '.' ?

Pourquoi cette architecture , me direz-vous ? parce que j'ai écrit un thème et que le thème appelle ces CSS, tout simplement si j'ose dire.
Ces fichiers CSS devraient normalement se situer dans le même répertoire que ton thème. C'est une convention qui permet de gérer plusieurs thèmes avec la même installation de Drupal.

Salut,

merci encore pour les réponses. le chemin de fichiers est bien files dans admin/settings, et puis je ne veux pas gérer plusieurs thèmes avec la même installation de Drupal, celui-ci étant fixé une fois pour toutes.
Bref, c'est sur qu'en mettant mes CSS avec mon thème personnalisé j'aurai plus de soucis. Enfin j'espère.... Mais techniquement je ne comprends toujours pas pourquoi il en veut à mes fichiers....