Mettre à jour un archive zip sur un serveur

WRInaute occasionnel
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:
$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 :|
 
WRInaute impliqué
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 ?
 
WRInaute occasionnel
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:
  $zip->addFile('mon_document.doc', 'newname.doc');
ne s'exécute pas, car je n'ai aucune réponse de la condition.
 
WRInaute impliqué
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.
 
WRInaute occasionnel
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 ...
 
WRInaute occasionnel
Aucune erreur affichée

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

Code:
$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
 
WRInaute occasionnel
Je suis toujours dans l'impasse avec ce bout de code :| :

$zip = new ZipArchive; $res = $zip-...UE) { print "ok"; } else { print "nok"; }

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:
 
WRInaute impliqué
Essaye avec:
Code:
$res = $zip->open($zip_file, ZIPARCHIVE::OVERWRITE);

Et essaye d'afficher les erreurs, selon la doc, avec :
Code:
echo $zip->GetStatusString();
 
Discussions similaires
Haut