Téléchargement
illégal
Posez votre question Signaler

Modifier chmod avec php ? [Résolu]

stefart 33Messages postés 28 février 2008Date d'inscription - Dernière réponse le 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
Lire la suite 

Modifier chmod avec php »

7 réponses
Réponse
+0
moins plus
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.
stefart- 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
Ajouter un commentaire
Réponse
+0
moins plus
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.
stefart- 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() ?
stefart- 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
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
stefart- 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! :)
Ajouter un commentaire
Ce document intitulé « modifier chmod avec php ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?