Bonjour,
J'utilise PHP5 sur suPHP sur Apache 2. Les scripts PHP sont donc exécutés par le serveur web en utilisant l'utilisateur propriétaire du fichier php. Pour sécuriser tout ça, suPHP permet de régler le umask avec lequel tournera le script, chez moi c'est 073.
Tout fonctionne bien SAUF l'upload de fichier : lorsqu'un upload de fichier est effectué à travers PHP, le fichier résultant a le mode 600, et non 604 comme il devrait. Celà empêche donc Apache d'y accéder par la suite. En revanche, la création d'un fichier avec fopen() ou toute autre fonction de PHP donne bien les bons droits (604).
Je précise ma configuration :
Debian Stable + dépôts backports.org, Apache2, php5 sans safe_mode, suPHP 0.6.2 compilé à la main. Umask configuré dans suPHP à 0073.
Il va de soi que je cherche une solution autre que de rajouter un chmod() dans tous les scripts PHP, d'autant plus que je gère une plate-forme d'hébergement mutualisé, je ne vais pas demander à mes clients de modifier des scripts qui posent problème (comme DotClear2 par exemple). L'utilisation de la fonction umask() en début de fichier PHP ne donne rien, l'upload de fichier se passant avant l'exécution du script.
Je galère depuis une semaine sur ce problème sans vraiment trouver de solution. Peut-être quelqu'un at-t-il déjà été confronté à celà ?
Merci de vos conseils,
Setaou
# sans dire de connerie (enfin j'espere)
Posté par NeoX . Évalué à 1.
donc c'est plutot de ce coté là qu'il te faut regarder.
[^] # Re: sans dire de connerie (enfin j'espere)
Posté par setaou . Évalué à 1.
Ce problème est vraiment curieux. D'autres personnes sur le net semblent l'avoir eu, mais aucune ne l'a résolu de la même façon, et aucune de ces solutions ne marche pour moi !
[^] # Re: sans dire de connerie (enfin j'espere)
Posté par Raphaël G. (site web personnel) . Évalué à 2.
J'ai déjà touché a ça pour faire une barre de progression d'upload, le meilleur moyen de de regarder dans le code source de php si il y a pas un bug ou si tu t'y prend mal...
Le code d'upload est dans la source, rfcXXXX.c dans le rep Zend ou core je me souviens plus trop, enfin c'est le seul commençant par rfc...
Vérifie si il y a un chmod de fait dessus ou autre, trace un peu ça et tu verra.
Sinon essaye de regarder les variables d'environnement vu que ça dois être dedans non ?
[^] # Re: sans dire de connerie (enfin j'espere)
Posté par setaou . Évalué à 1.
Je crois que je vais arrêter de chercher sur ce problème car j'ai un workaround sous la main : utiliser un scipt PHP en prepend afin de chmoder avec les bons droits les fichiers uploadés.
Merci à tous de vos conseils.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.