[FTP] Problème de droits ? Ah non, encore plus dingue ?

WRInaute passionné
Bonjour à tous,


Aujourd'hui j'ai besoin de vous pour un petit problème qui commence vraiment à me prendre la tête... explications :

1 - Depuis une page php, je créé une image via "Imagejpeg" pour la stocker dans un dossier spécifique.
2 - Ce dossier est préalablement créé via une autre page appelé bien avant (pas le même script)

Lorsque je créé le dossier "à la main" sur le serveur, alors l'image est bien créée... par contre, si le dossier à été créé par mkdir(), pas moyen d'y mettre quoi que ce soit à l'intérieur...

C'est donc un soucis de droits, probablement...

1 - Je regarde la valeur des droits du dossier créé à la main : 775
2 - Je regarde la valeur des droits du dossier créé via mkdir() : 755

Bon, après avoir passé quelques minutes à ne pas comprendre pourquoi mkdir() ne voulait pas créer un dossier avec les droits demandés, me voilà forcé d'utiliser umask(0) pour y parvenir... ENFIN !!

J'ai donc bien mes dossiers avec des droits identiques... et malheureusement toujours le même problème...

Quelqu'un connait-il l'origine du problème ?

Merci !
 
WRInaute passionné
Je ne m'y connais pas trop en chmod niveau PHP, mais au niveau serveur généralement :
apache tourne en user "apache" (par exemple)
ton FTP tourne en user "toi" (ton login FTP).
résultat apache en mkdir fait le dossier en user apache.
tu fais ton dossier en user "toi".
Il faut donc regarder l'owner (uid/guid) du fichier (dans filezilla il y a une option pour afficher si tu es sous filezilla).
 
WRInaute passionné
Bien vu !!

C'est exactement ça... mais alors maintenant, comment faire pour que mkdir() fasse le dossier en user "ftp" ?
C'est possible au moins ?

EDIT : Il semblerait que chown() soit une solution, je jette un œil et je vous tiens au courant !
 
WRInaute passionné
Bon, chown() ne change rien sur mon dossier... il semblerait que le Safe Mode y soit pour quelque chose...

Zou, je me lance sur cette piste...
 
WRInaute passionné
Bon, c'est un vieux mutualisé... à ma connaissance, je ne peux pas intervenir sur ce genre de paramètre.

La seule solution que je vois c'est => Changer d'hébergeur...

Vous avez une autre idée ?
 
WRInaute passionné
Il te faut un hébergeur où suPHP est installé (ça permet justement de faire tourner Apache avec ton user FTP).

En revanche, tu n'as pas forcément à changer d'hébergeur car faire tourner PHP en user FTP revient à faire un chmod 777 de *tout* ;)

Tu dois créer tes dossiers en PHP non pas avec mkdir mais avec les fonction ftp_. Alors oui, c'est plus chiant, mais ça reste possible, et c'est surtout beaucoup plus sécurisé (même si tu dois stocker ton pass quelque part).

chown ne fonctionne qu'en root (change owner pour la traduction) et serait encore plus dangereux s'il fonctionnait.
Si ton architecture est :
image/année/mois/
par exemple
Si image est en 755 (pas sûr), apache aura les permissions pour créer des dossiers dedans.
 
WRInaute passionné
Merci Julia41 pour tes explications, tu as visé juste pour le soucis que je rencontre.

Le serveur sur lequel je dois travailler tourne sur une version dépassée de PHP. J'y rencontre des soucis dont celui présenté sur ce sujet mais pas seulement.

Passer par les commandes FTP de PHP est relativement simple et pourra sûrement régler mon problème, mais j'ai bien peur de rencontrer d'autres soucis à l'avenir lors de l'évolution du site.

Je vais tenter de convaincre les personnes avec qui je travaille de changer d'hébergeur pour se tourner vers une solution techniquement plus évoluée. Je pense que c'est mieux ainsi. Si au pire c'est impossible, alors je bricolerais.

Merci encore à toi pour la qualité de tes interventions.
 
Discussions similaires
Haut