Joueb.com
Envie de créer un weblog ?
Soutenez le Secours populaire
ViaBloga
Le nec plus ultra pour créer un site web.
Débarrassez vous de cette publicité : participez ! :O)

Upload de fichiers impossible avec Apache/PHP
Première publication : samedi 19 février 2005.
 

Sur une machine que j’administre (Mandrake 10.1), nous avons rencontré un problème que je ne connaissais pas : il était impossible d’uploader des fichiers dans le LMS Ilias ; les fichiers avaient l’air d’exister dans l’application, mais ils apparaissaient comme des répertoires si on essayait de les ouvrir...

Naturellement, la première chose que nous avons regardée a été les droits sur le répertoire /opt/ilias/data dans lequel les fichiers sont sauvegardés. Evidemment, ils étaient bons (sinon, je n’écrirais pas un article tout exprès...)

Un examen un peu plus approfondi a révélé que l’upload ne fonctionnait pas non plus avec d’autres applic PHP (phpMyAdmin en l’occurrence). Le système était donc en cause...

Après un phpinfo(), j’ai découvert que le répertoire temporaire par défaut était celui hérité de l’environnement de root (/root/tmp). Cette variable (en fait 2 variables : $TMP et $TMPDIR) sont affectées dans le script /etc/profile.d/tmpdir.sh qui vérifie le niveau de sécurité (SECURE LEVEL) positionné dans le fichier /etc/sysconfig/msec . Si ce niveau est supérieur ou égal à 2 (le mien était à 4), le répertoire temporaire est ${HOME}/tmp.

Bien sûr je suppose qu’au démarrage du système, lorsque /etc/init.d/httpd est lancé, le shell de root n’est pas initialisé avec le profil (mais je n’en suis pas certain) et que le problème ne se pose peut-être pas...

En tout état de cause, il existe une solution qui consiste à dire en dur à PHP où sauvegarder les fichiers uploadés. Il faut modifier la directive upload_tmp_dir en mettant le chemin du répertoire choisi (en ce qui me concerne, j’ai mis /tmp).

Ecrit par blacherez, le Samedi 21 Mai 2005, 03:20 dans la rubrique Linux.