INFO.lesbarques.fr

SME 8 et 9 : uploader des images avec SPIP

samedi 29 décembre 2012 par Georges Charpenay

Depuis la bascule de sites internet spip d’un serveur sme 7 à sme 8, j’ai eu la surprise que tous les sites spip hébergé sur le nouveau serveur ne voulaient pas uploader des documents ou images.

JPG - 23.4 ko
Impossible d’uploader

En cliquant sur le lien, j’ai constaté qu’il manquait une variable à renseigner au niveau du moteur php.

JPG - 12 ko
Erreur 6 dossier temporaire

VERIFICATION DE L’ANOMALIE

Pour vérifier cette anomalie, il suffit de créer un fichier phpinfo.php à la racine d’un des sites qui ne fonctionnent pas avec les instructions suivantes :

Puis d’appeler ces infos en appelant : http://votresiteinternet/phpinfo.php

Le site vous retourne alors les valeurs de php chargées et nous voyons que la valeur upload_tmp_dir n’est pas renseignée.

Le problème vient du fait que spip se sert de la configuration apache depuis php.ini et de l’attribut "upload_tmp_dir".

Celui-ci doit être renseigné par un répertoire ayant les droits de lecture et d’écriture.

TESTER UNE SOLUTION/VARIABLE

Il faut donc créer un répertoire pour les upload de spip.

J’ai pensé qu’un répertoire intitulé tmpspip, sous /opt conviendrait. Je l’ai volontairement placé à cet endroit afin qu’il soit accessible depuis les sites de toutes les ibays et en plus, il pourra, à souhait, être sauvegardé avec le reste du système (voir article inclure répertoire opt dans les sauvegardes smeserveur sur ce même site internet).

Nous nous connecterons donc avec putty et invoquerons les commandes suivantes :

Voilà, c’est fait, et à partir de ce moment, on serait tenté d’aller modifier directement le fichier php.ini en ajoutant l’instruction

Puis redémarrer le service http avec

Pour enfin vite aller dans votre site spip préféré et uploader une image ou un document pour voir que ça fonctionne. .. Et ça fonctionne ! Dans la négative, vous pouvez vérifier la valeur d’upload_tmp_dir avec le fichier phpinfo.php et son appel dans la procédure décrite ci-dessus (au cas où vous auriez fait une faute de frappe par exemple).

On a fini ?, mais non !!!

SOLUTION PERENNE

A cette étape, nous savons que nos modifications vont fonctionner, mais à n’importe quel redémarrage-reconfiguration du serveur, par exemple lors d’une mise à jour, les modifications sont perdues (configuration sme oblige).

Alors, pour rendre ces modifications permanentes, il faut passer par une petite étape, comprendre les templates. (au moins un petit peu comme pour mon cas).

Les templates sont des fragments de tous les fichiers vitaux de votre sme. Php.ini par exemple, est coupé en une multitude de fragments tous stockés dans /etc/e-smith/templates/etc/php.ini/

Au redémarrage du système, ces fragments reconstituent le fichier php.ini d’origine.

Mais pour résoudre notre problème présent dirons-nous, le détail ci-dessous aideront à comprendre le fonctionnement des templates :

- je crée dans les templates personnalisées un répertoire devant accueillir mes propres modifications du fichier php.ini :

Je cherche le fragment de fichier qui m’intéresse dans /etc/e-smith/templates/etc/php.ini/

Ici, je constate que le 60FileUploads peut contenir ma variable de répertoire temporaire.

Je copie donc le fragment « origine » (sur lequel je veux faire des modifications ) dans ce répertoire personnalisé (templates-custom)

Si l’instruction n’est pas dans un fragment d’origine, je peux en créer un en prenant un numéro de fragment n’existant pas (le numéro correspondant à la position où il se trouvera dans le fichier destination (le cas présent, le fichier php.ini)

- je modifie le fichier copié (ou mon propre fragment), dans templates-custom.

- j’ajoute la ligne (pour le cas présent) :

- je quitte nano en sauvegardant le tout.


Accueil du site | Contact | Plan du site | Espace privé | visites : 478386

Site réalisé avec Spip + Squelette Alternatives

RSSfr

Creative Commons License