[RESOLU] Problème avec la fonction chmod()

Eléphanteau du PHP | 10 Messages

16 mars 2016, 20:59

Bonjour à tous.

Je rencontre un problème avec la fonction chmod de PHP.

En effet, j'utilise l'envoi des vidéos sur le serveur web. Seul problème les droits du fichier sont à 600 (au lieu de 644). Je dois à chaque fois modifier à la main va FTP pour changer les droits.

Voilà ce que j'ai fais :
if (is_uploaded_file($_FILES["flv_t2"]["tmp_name"]))
{
    chmod($nomDestination2,0644);
     
    if (rename($_FILES["flv_t2"]["tmp_name"], $repertoireDestination2.$nomDestination2))
    {
        echo "Le fichier temporaire ".$_FILES["flv_t2"]["tmp_name"]." a été déplacé vers ".$repertoireDestination2.$nomDestination2;
    } else {
        echo "Le déplacement du fichier temporaire a échoué, vérifiez l'existence du répertoire ".$repertoireDestination2;
    }
} else {
    echo "Le fichier n'a pas été uploadé (trop gros ?) ou le déplacement du fichier temporaire a échoué.<br>Vérifiez l'existence du répertoire ".$repertoireDestination2;
    echo ', <a href="javascript:history.go(-1);">Retour</a>';
}
Merci de m'aider les amis, je suis perdu :-(

Fichier envoyé vers uploads/video

Eléphant du PHP | 243 Messages

16 mars 2016, 22:57

Bonjour,
Je pense que le soucis vient des permissions qui sont données par défaut lors de la création d'un fichier.
Quelle valeur te retourne : var_dump(umask()); ?
Par défaut (644), il me semble que le umask doit te renvoyer 16. Si ce n'est pas le cas, c'est que tu as un soucis avec celui-ci.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 10 Messages

17 mars 2016, 00:35

Bonsoir Ascla, et erci pour cette réponse.
var_dump(umask()); me renvoie int(58)

J'essaye toujours de voir de mon côté

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2016, 15:30

Bonjour,

As-tu testé le résultat de la fonction chmod() ? celui-ci doit retourner TRUE si le changement de droits a bien été appliqué...

En l'occurrence, je pense qu'il renverra FALSE car tu semble appliquer le chmod sur un nom de fichier alors que celui-ci n'a pas encore été déplacé sur le serveur
if (rename($_FILES["flv_t2"]["tmp_name"], $repertoireDestination2.$nomDestination2))
    {
        echo "Le fichier temporaire ".$_FILES["flv_t2"]["tmp_name"]." a été déplacé vers ".$repertoireDestination2.$nomDestination2;
        chmod($repertoireDestination2.$nomDestination2, 0644); // chmod APRES avoir déplacé le fichier ;)
    } else {
        echo "Le déplacement du fichier temporaire a échoué, vérifiez l'existence du répertoire ".$repertoireDestination2;
    }
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 10 Messages

17 mars 2016, 16:25

Bonjour Ryle.

J'étais sûr d'avoir tenté ceci, mais effectivement avec toutes mes tentatives, je n'ai pas dû y penser alors que c'est logique.
Merci, ça fonctionne désormais ;)