Arborescence des dossiers en écriture

Conditions d’utilisation

Dans certains cas « paranoïaques » de configuration d’apache (très précisément safe_mode et safe_mode_gid à on + contrôle des dossiers avec UID), l’utilisateur qui fait tourner PHP peut créer des répertoires mais se retrouve incapable d’écrire dedans, ce qui fait planter la génération des fichiers de cache, des fichiers temporaires en général (logs et autres) ainsi que la génération des vignettes et des images typo, le stockage des fichiers dans /IMG...

Dans la majorité des cas, cette configuration s’accompagne de l’impossibilité de modifier le propriétaire des dossiers générés ou le système de droits du serveur.
Si on veut pouvoir malgré tout utiliser SPIP, une solution (partielle !) consiste à créer par FTP toute l’arborescence des dossiers que SPIP est susceptible d’utiliser, puis, de mettre ceux-ci en « écriture pour tous » (777). De cette façon le propriétaire des dossiers est compatible avec le mode de contrôle UID et l’écriture des fichiers dans ces dossiers par SPIP (donc les scripts PHP) est possible.

Le problème de ce « bricolage » est que cela nécessite de créer à la main l’arborescence des dossiers /tmp, /local et /IMG qui comportent de très nombreux sous-dossiers. Pour simplifier la chose, vous trouverez donc en fichier attaché à cet article un zip qui comprend ces 3 dossiers et tous leurs sous-dossiers.

Mode d’emploi

  • dézippez dossiers_777_spip_vides.zip dans un coin de votre ordi (en local) ;
  • supprimez les dossiers /tmp, /local et /IMG existants (mais vides) sur le site distant ;
  • transférez par FTP les 3 dossiers du zip à la racine de votre SPIP ;
  • à l’aide de votre client FTP passez ces 3 dossiers en mode « écriture pour tous » (777 ou drwxrwxrwx) en vous assurant que cette autorisation est bien reportée sur tous les sous-dossiers (récursion).

Alternative

Il est possible de configurer SPIP pour qu’il n’utilise pas de sous-dossiers lorsqu’il génère les fichiers de /tmp, /IMG et /local en ajoutant dans le fichier /config/mes_options.php (à créer si nécessaire) la directive suivante :

define('_CREER_DIR_PLAT', true);

À partir de là on aura donc à effacer puis recréer par FTP avec le compte de l’utilisateur propriétaire de l’hébergement les 3 dossiers en questions pour que SPIP génère des fichiers xyz.plat qui remplaceront l’utilisation de l’arborescence dans ces dossiers.

Attention ! cette solution est définitive ! il sera extrêmement compliqué de revenir au fonctionnement normal de SPIP par la suite (en particulier pour tous les fichiers documents attachés aux articles) ce qui bloque quasiment toute possiblité de migrer sur un autre hébergement...

Sur ce sujet, voir aussi : quels sont les differents Droits des Fichiers et dossiers

Discussion

Une discussion

  • 1

    Merci, c’est un bon début, mais il faut savoir que les scripts Spip (et certains plugins) peuvent ajouter d’autres sous-dossiers, par exemple, il y a un sous-dossier par auteur dans tmp/upload/ dès qu’un auteur fait un téléchargement de document... donc ça plantera la première fois qu’un auteur tentera un upload de fichier, c’est pas propre

    • Christophe

      En effet.
      J’ai enfin réussi à terminer l’installation et la migration de la base de données, mais je me trouve maintenant avec ce message sur « ecrire\tmp\cache », « local\cache_vignettes » pour l’instant

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 13 juin 2011