Modifier chmod avec php ?

Résolu/Fermé
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008 - 4 mars 2008 à 11:13
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008 - 6 mars 2008 à 08:43
Bonjour,

Voila je cherche a faire un changement sur le chmod d'une image avec php.
En effet lorsque je renomme l'image via un script d'upload elle porte le chmod 0600 qui interdit du coup ca lecture.
je cherche donc a modifier le chmod en 0777 avec une ligne de code a mettre dans ma page d'upload!
voila se que j'ai mis :

         chmod ("$cheminPhoto", 0777);



mais ca marche pas pourquoi ? je me le demande bien ! mais je ne suis pas un pro en php !!!

alors si y'a un pro qui a une idée sur le problème je veu bien un coup de main
merci
A voir également:

3 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 mars 2008 à 12:05
Bonjour,

Si ton droit sur le fichier est 600, cela veut dire que :
- le propriétaire du fichier possède le droit 6, c'est à dire lecture et écriture sur ce fichier (mais pas éxécution)
- les autres users du même groupe que le propriétaire n'ont aucun droit
- les users des groupes différents n'ont aucun droit sur le fichier

Si ton chmod ne fonctionne pas dans ton script PHP, il faut alors savoir comment est éxécuter ce script : est ce un script présent sur un site ? Auquel cas c'est l'utilisateur qui l'exécute lorsqu'il navigue sur ton site internet. Si oui, je pense que ton hébergeur, pour des raisons de sécurité, n'a pas défini les users de type 'navigateur' dans le même groupe que ton user à toi (de ton compte). Pour le coup, ils n'ont pas les droits d'écriture / lecture sur ces fichiers effectivement.
Si ton script s'éxécute en batch la nuit, il faut alors voir avec ton hébergeur dans quel groupe entre ce script, de façon à ce qu'il ai les droits pour lire / écrire. Mais à priori s'il peut écrire il peut forcément lire (ce serait bête d'avoir l'un sans l'autre...)

Si ce fichier n'est pas un fichier que tu as créé toi même, alors il faut voir avec ton hébergeur pour qu'il fasse le changement lui même, ou alors : ouvre ton logiciel de transfert FTP (ex : mozilla), et change les droits sur le fichier à la main.

Bon courage.
0
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008
4 mars 2008 à 12:33
merci de ta réponse kij_82

Pour info voici le script que j'ai pris sur le net et légerment modifié :

    if (is_uploaded_file($_FILES["maphoto"]["tmp_name"])) {
        // recupération de l'extension du fichier
        // autrement dit tout ce qu'il y a après le dernier point (inclus)
        $nomPhoto = $_FILES["maphoto"]["name"];
        $extension = substr($nomPhoto, strrpos($nomPhoto, "."));
        // Contrôle de l'extension du fichier
        if (eregi("^ph", $extension)) {
            die("Les fichiers en .ph* ne sont pas autorisés.");
			}
        $cheminPhoto = $login . "_photo" . $extension;
        rename($_FILES["maphoto"]["tmp_name"], $repository.$cheminPhoto);
		
	}
        chmod ($cheminPhoto, 0777);


Le problème est que le script propose au utilisateur d'ajouter une image a un système d'annonce
donc c'est pas très pratique de devoir modifier le chmod a la main via ftp apres.
en tous cas j'avai déjà fai le test en ftp et ca marche belle et bien

si seulement je savais comment en même temps uploader et modifier le chmod de l'image ca serai idéale !

si tu a une idée merci d'avance
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 mars 2008 à 13:12
Re,

Je pense savoir d'ou via le kwak.
Plutot que d'utiliser la méthode rename, utilise la fonction move_uploaded_file :
http://www.manuelphp.com/php/function.move-uploaded-file.php

Et une fois le fichier déplacer correctement, fais ton chmod sur ce nouveau fichier.
Ca devrait fonctionner correctement.
0
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008
4 mars 2008 à 14:00
oui merci mais puis je tous de même changer le nom du fichier avec la fonction move_uploaded_file() ?

parce que je ne souhaite pas que l'image uploader ai un nom bidon mais le login de l'utilisateur en prefixe + "_photo"
comme ca chaque image uploader porte un nom unique associé a un utilisateur.
Et aussi afin d'éviter l'écrasement d'autres image lors d'upload ultérieur.

Je sais pas si je suis bien clair dans mes explications... mais c'est pour ça que j'ai choisi la fonction rename !

tu pense que c'est possible avec la fonction move_uploaded_file() ?
0
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008
4 mars 2008 à 15:00
Ok super ça marche impeccable !

avec la fonction move_uploaded_file()

le comprend pas bien a quoi sert la fonction rename() si la fonction move_uploaded_file() fai la meme chose ??!!
enfin en tous cas la plus de problème avec chmod

merci beaucoup a toi kij_82
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 mars 2008 à 15:20
La différence est la suivante : Rename comme son nom l'indique ne permet que de renommer le fichier (et non le déplacer)
Pourquoi le chmod ne fonctionnait pas alors ? Tout simplement parce que le chmod s'applique à un fichier "physique" (présent sur le disque). Or tu faisait un rename sur un fichier non physique (le fichier uploader n'est pas présent physiquement mais uniquement en mémoire je crois), du coup le chmod ne trouvait pas ton fichier.

La fonction move_uploaded_file elle permet de copier le fichier virtuel sur un emplacement physique, ce qui permet effectivement de faire un chmod derrière.

Si ton problème est résolu merci de cocher le tag "résolu" pour la discussion :)
0
stefart Messages postés 33 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 10 juin 2008
6 mars 2008 à 08:43
ok merci encore pour le coup de main et l'éclaircissement sur la différence entre rename () et move_uploaded_file () je comprend mieux a présent.

a bientôt sur le forum p'etres! :)
0