Bonjour à tous !
Je rencontre un soucis lorsque j'archive des fichiers avec zipArchive.
Je suis assez limité au niveau des manipulations serveurs à savoir que je ne peux pas voir les messages d'erreur notamment le détail du code 500 qui est retourné.
Je crée mon archive en scannant tous les fichiers de tous les dossiers d'un répertoire racine.
Je n'ai pas de soucis lorsqu'il y a une cinquantaine de fichiers mais des que ca commence à monter en nombre je n'arrive plus à gérer mes informations de retour. Pourtant l'archive et parfaitement créée et il ne manque pas un seul fichier dans le zip. Le hic c'est que ca me renvoie donc l'erreur 500 et je ne peux pas fournir le détail de l'archive. De plus l'archive est d'abord créée dans un répertoire temporaire (sur le serveur Apache) et ensuite doit être copiée sur un autre serveur. Malheureusement ca s'arrête avant.
Voici le code que j'utilise :
(pour info la version de php est 5.2.13)
Auriez vous une idée pour résoudre ce problème ?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 //Annee en cours pour création du répertoire si inexistant $annee = Date('Y') .'/'; //Concatenation du chemin avec l'année (emplacement complet des archives de l'annee en cours) $dir = '//autreServeur/Archives/'.$annee; $archiveServeur = $dir.'archives.zip'; //Vérification et création du repertoire de l'annee en cours si inexistant if(!is_dir($dir)){ if(!mkdir($dir)){ print "Erreur - Impossible de créer le répertoire de l'année en cours pour archivage."; exit; } } //Emplacement et nom de l'archive créée $archiveFile = '//serveurApache/Temp/archives.zip'; //Instanciation de l'objet ZIP $ziph = new ZipArchive(); $texte = ""; //Vérification de l'existence de l'archive if(file_exists($archiveFile)){ if(!unlink($archiveFile)){ print "Erreur - Impossible de supprimer l'archive pour : <b>".$action."</b><br>"; exit; } } // On cree l'archive dans le repertoire temporaire if($ziph->open($archiveFile, ZIPARCHIVE::OVERWRITE) !== TRUE){ print "Erreur - Impossible de créer l'archive : $archiveFile"; exit; } else { // On lui definit un commentaire avec la date du jour $ziph->setArchiveComment($action); // On précise dans un message que l'archive est créée print "Création de l'archive temporaire : <u>$archiveFile</u><br><br>"; } // Emplacement des fichiers a archiver $repertoire = '//serveurApache/repertoire'; $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir),RecursiveIteratorIterator::SELF_FIRST); $countFolder = 1; $countFile = 1; foreach($objects as $name => $object){ $name = str_replace('\\','/',$name); if(is_dir($name)){ $countFolder++; } else { if(!$ziph->addFile($name)){ $erreur .= " fichier non archivé : $name <br>"; } $countFile++; } } // Une fois Tout ca fait on ferme l'archive $ziph->close(); // Et on la copie sur le serveur print "Nombre de répertoires : $countFolder <br>Nombre de fichiers : $countFile <br>"; if(!copy($archiveFile,$archiveServeur)){ print "Erreur - Impossible de déplacer l'archive sur le serveur.<br>"; exit; } else { print "Archive temporaire déplacée vers <u>$archiveServeur</u><br>"; // On n'oublie pas de la supprimer du repertoire temporaire if(!unlink($archiveFile)){ print " - Impossible de supprimer l'archive temporaire.<br>"; } } print $texte;
Merci par avance !
Partager