Bonjour,

je suis en train de coder un script qui télécharge un fichier '.zip' et j'aimerais qu'une fois téléchargé, le script puisse le 'déziper'. Seulement rien ne se passe quand je run mon script.

D'après ce que j'ai trouvé sur internet, cela viendrait du fait que, une fois téléchargé, mon fichier '.zip' prend des valeurs au niveau de ses permissions d'accès différentes de celles d'origine (il passe de rw-rw-rw- à rw-r--r-- ou quelques chose du style).

Voilà mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Récupération des variables
        $file=$_FILES['file'];
        $tag=$_POST['tag'];
        $iPhone=$_POST['iPhone'];
        $iPad=$_POST['iPad'];
        $sAndroid=$_POST['sAndroid'];
        $tAndroid=$_POST['tAndroid'];
        $portrait=$_POST['portrait'];
        $landscape=$_POST['landscape'];
 
        // Vérification du nom du fichier
        echo '\'' . $file['name'] . '\'</br></br>';
 
        // Tests de réception du fichier
        $fileinfos=pathinfo($file['name']);
        $extension=$fileinfos['extension'];
        $allowedextensions = array('zip');
        if (!isset($file) OR $file['error'] != 0 OR $file['size'] > 1000000 OR !in_array($extension, $allowedextensions)) {
            echo "...une erreur est survenue : téléchargement non autorisé ou incomplet (le fichier doit être de format '.zip' et faire moins de 1Go)</br>";
        } else {
            move_uploaded_file($_FILES['file']['tmp_name'], 'generated/' . basename($_FILES['file']['name']));
            echo '...\'' . $file['name'] . '\' uploadé avec succès</br>';
        }
 
        // Tests de validité du formulaire
        if (!$iPhone AND !$iPad AND !$sAndroid AND !$tAndroid) {
            echo "...une erreur est survenue : aucun suppport sélectionné</br>";
        }
        if (!$portrait AND !$landscape) {
            echo "...une erreur est survenue : aucune orientation sélectionnée</br>";
        }
 
        // Dé-zip du fichier
        if (isset($_FILES['file'])) {
        shell_exec("cd generated/");
        shell_exec('chmod 777 ' . $_FILES['file']);
        system('unzip ' . $_FILES['file']);
        echo '...\'' . $file['name'] . '\' désarchivé';
J'ai essayé de changer les droits de différentes manières :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
        shell_exec("cd generated/");
        shell_exec('chmod 777 ' . $_FILES['file']);
 
//ou
 
        system("cd generated/");
        system('chmod 777 ' . $_FILES['file']);
 
//ou 
 
        chmod($_FILES['file'], 0777);
Rien à faire, j'ai pourtant réussi à changer les droits du dossier "generated" grâce à la commande "system("chmod 777 generated");".
Est ce que quelqu'un sait d'où peut provenir le problème ? (le fichier est bel et bien téléchargé btw).

Merci !