Bonjour,
j'ai créé une page php me permettant d'uploader des fichiers sur mon serveur.
Sur cette page, on a donc un bouton de type file pour choisir le fichier et un bouton ajouter pour uploader le fichier sur le serveur.
Et en dessous, toujours sur la même page, on a la liste des fichiers uploadés et la possibilité de les télécharger un par un, ou la possibilité de télécharger une archive zip contenant tous les fichiers.
Cette archive est créée avec la librairie ziplib.
Jusqu'à aujourd'hui, il n'y avait aucun problème.
Sauf que ce matin, après avoir uploadé un fichier, j'obtiens :
Et la ligne 178 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 46639668 bytes) in /volume1/web/extranet/lib/ziplib/zip.lib.php on line 178
Au départ j'ai pensé que ça venait des tailles dans php.ini comme j'ai pu lire à plusieurs endroits, sauf que celle-ci est à 128M donc ça ne doit pas venir d'ici. J'ai également regardé la taille pour les upload_size toujours dans php.ini, mais elles sont toutes assez élevées. Est-ce que c'est une variable à vider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ctrldir .
Je vous mets en pièce jointe la librairie zip.lib.
Et ci-dessous une partie du code de ma page d'upload de fichiers :
(la liste des documents qui ont été uploadés + la compression dans l'archive)
Si vous pouviez m'aider
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 // Liste des fichiers à compresser $reqzip = mysql_query("SELECT nom_document FROM document;"); $tabdoc = array(); while ($dataz = mysql_fetch_array($reqzip)) { $nom = $dataz['nom_document']; $tabdoc[] = 'pot/'.$nom; } $zip = new zipfile () ; //on crée une instance zip $i = 0 ; while ( count( $tabdoc ) > $i ) { $fo = fopen($tabdoc[$i],'r') ; //on ouvre le fichier $contenu = fread($fo, filesize($tabdoc[$i])) ; //on enregistre le contenu fclose($fo) ; //on ferme fichier $zip->addfile($contenu, $tabdoc[$i]) ; //on ajoute le fichier $i++; } $archive = $zip->file() ; // on associe l'archive // on enregistre l'archive dans un fichier $open = fopen( 'pot/pot.zip' , "wb"); fwrite($open, $archive); fclose($open);
PS : l'upload de chaque fichier fonctionne bien vu qu'ils apparaissent dans ma liste de fichiers uploadés.
Partager