Mettre à jour un archive zip sur un serveur


jer2701
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 338
Inscription: 2 Sep 2005

Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 11:28

Bonjour à tous,

J'ai besoin de mettre à jour une quantité importante de répertoires zip sur un serveur, et je cherche à le faire avec PHP.
Mes recherches m'ont permis de créer un zip avec plusieurs documents à l'intérieur. J'ai du mal à trouver une solution pour mettre à jour l'archive sans être obligé de recompresser tous les fichiers déjà présents dans cette dite archive.

Je voudrais pouvoir ouvrir l'archive et soit y insérer un nouveau document à l'intérieur soit mettre à jour l'un des documents présents.

J'ouvre l'archive avec
$zip = zip_open("monrep/fichier.zip");

J'arrive aussi à lire son contenu
mais je n'arrive pas à la mettre à jour en conservant son contenu original. 8O

Quelqu'un aurait une idée ? :roll:

J'ai essayé avec :
Code: Tout sélectionner
$zip = new ZipArchive;
if ($zip->open('monrep/fichier.zip') === TRUE) {
    $zip->addFile('mon_document.doc', 'newname.doc');
    $zip->close();
    echo 'ok';
} else {
    echo 'échec';
}


Mais ça ne fonctionne pas, je n'ai pas de retour :|

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 15:58

A tout hasard, disposes-tu des droits d'écriture sur le fichier, ou plus précisément, l'utilisateur (au sens système du terme) qui exécute PHP dispose-t-il des droits nécessaires sur ton fichier zip ?


jer2701
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 338
Inscription: 2 Sep 2005

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 16:15

Au départ lorsque l'archive est créée, elle est en mode 644 sur le serveur
Que je force ou pas manuellement en mode 666 cela ne change rien.

On dirait que la commande :
Code: Tout sélectionner
  $zip->addFile('mon_document.doc', 'newname.doc');

ne s'exécute pas, car je n'ai aucune réponse de la condition.

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 16:18

Essaye en 777...

Et qu'est-ce que tu entends par "je n'ai aucune réponse de la condition" ? Ton code est censé afficher "ok" ou "échec", tu dois donc voir si le code a été exécuté ou non.


jer2701
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 338
Inscription: 2 Sep 2005

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 16:47

Le répertoire "monrep" est en mode 777 en cascade sur tout son contenu (archive : fichier.zip)

Oui c'est exact, j'attends la réponse "ok" ou "échec" mais je n'obtient ni l'une ni l'autre ...
Quelque chose m'échappe mais je ne vois pas quoi ...

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 17:21

Affiche toutes les erreurs...

error_reporting(E_ALL);

en début de fichier.


jer2701
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 338
Inscription: 2 Sep 2005

Re: Mettre à jour un archive zip sur un serveur

Message le Ven Aoû 07, 2009 17:37

Aucune erreur affichée

après avoir fait pas mal d'essais :|

Code: Tout sélectionner
$zip = new ZipArchive;
$res = $zip->open('monrep/fichier.zip');
if ($res === TRUE)
{
   print "ok";
}
else
{
print "nok";
}


Rien que ce bout de code qui doit permettre l'ouverture de l'archive ne fonctionne pas.
Cela signifie que je n'arrive pas à ouvrir l'archive. (En prenant les problèmes dans l'ordre, le premier est déjà là...)
Pourtant j'ai vérifié la syntaxe sur plusieurs sources elle est correcte ... 8O


jer2701
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 338
Inscription: 2 Sep 2005

Re: Mettre à jour un archive zip sur un serveur

Message le Lun Aoû 10, 2009 15:35

Je suis toujours dans l'impasse avec ce bout de code :| :

[url]$zip = new ZipArchive;
$res = $zip->open('fichier.zip');
if ($res === TRUE)
{
print "ok";
}
else
{
print "nok";
}[/url]

Je n'obtient aucune réponse à cette condition. :evil:
Ce que je ne comprends pas c'est que tous les tutoriaux fournissent le même exemple avec ce même bout de code; 8O

J'arrive bien à créer ou bien à remplacer l'archive mais impossible de la mettre à jour :cry:

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Mettre à jour un archive zip sur un serveur

Message le Lun Aoû 10, 2009 15:51

Essaye avec:
Code: Tout sélectionner
$res = $zip->open($zip_file, ZIPARCHIVE::OVERWRITE);


Et essaye d'afficher les erreurs, selon la doc, avec :
Code: Tout sélectionner
echo $zip->GetStatusString();


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité