Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 11h56   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 43
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 43
Points : 11
Points : 11
Par défaut Problème avec unzip/permissions

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 :
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 :
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 !
S4milli4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h54   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Bonjour,

Citation:
Envoyé par S4milli4
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).
Pour cela il te suffit de regarder les droits de ton fichier sur le serveur une fois uploader, ainsi tu serras fixé sur ce point.

Sinon ton problème est étrange, j'ai moi même écrit un script pour dé-zipper un fichier après un téléchargement et je n'ai pas du problème dessus.

Peut-être que cela vienne du fait que tu utilise la fonction zip de ton système et non celle de PHP ? Essaye donc de dé-zipper avec PHP

Je te joint mon code, cela pourra peut-être t'aider :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_GET['file']) && !empty($_GET['file']) && isset($_GET['idPlan']) && !empty($_GET['idPlan'])){
    $urlPlan = "";
    $zip = new ZipArchive;
    if($zip->open($_GET['file'])){
        $zip->extractTo('./');
        $zip->close();
        $urlPlan = 'plan/' . substr($_GET['file'], 0, -4) . '.dzi';
    }
    header("Location: ../newPlan.php?idPlan=" . $_GET['idPlan'] . "&urlPlan=" . $urlPlan);
}
?>
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 16h50   #3
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 43
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 43
Points : 11
Points : 11
En fait, j'ai réussi. A priori ca venait du "cd generated/" qui ne fonctionnait pas. Du coup j'ai ca comme code :

Code :
1
2
        system('unzip -qq uploaded/' . $file['name'] . ' -d uploaded/'); // On dézip le fichier
        echo '...\'' . $file['name'] . '\' désarchivé dans le dossier \'uploaded\'';
Si jamais ca aide quelqu'un d'autre. Pour moi ca marche.
S4milli4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web