1 pièce(s) jointe(s)
Upload de fichiers - Allowed memory size of
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 :
Code:
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
Et la ligne 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 ?
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)
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
|
// 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); |
Si vous pouviez m'aider :D
PS : l'upload de chaque fichier fonctionne bien vu qu'ils apparaissent dans ma liste de fichiers uploadés.