ziper un fichier sur le serveur

WRInaute impliqué
Bonjour à tous,

Je cherche à créer un code php qui me serve à ziper un fichier existant dans un répertoire sur mon serveur ...

Je m'explique :

J'ai un fichier csv généré par php ( à partir de ma base de données )

je dois envoyer ce fichier php sous forme zip à un serveur ftp ...

donc avant de l'envoyer, je dois le zipper ...

Mais comment faire ?????

Merci d'avance de votre aide :P
 
WRInaute impliqué
Merci quand même de ta réponse aussi rapide ... peut-être un peu trop ... :mrgreen:

car ça ne répond pas vraiment à ma question :(

Je connais ce script et ça fait un moment que je cherche sur Google ( c'est quand même le minimum pour un membre WRI :wink: ) et autres mais je ne trouve pas ce que je cherche car

ce script crée un zip qu'il t'envoies ensuite via http mais il ne crée pas de zip dans un répertoire du serveur ( or c'est ce qui m'intéresse !)

Je posais la question au cas ou des gars un peu chevronné du php ( ça doit se trouver sur WRI :wink: ) avait une idée sur la façon dont il faut transformer ce script ou un autre pour arriver au résultat souhaité ....

A+
 
WRInaute impliqué
cette class te créé un fichier archive.zip sur ton serveur il me semble, il te suffit de remplacer les lignes headers(..) par le code que tu veux :)
 
WRInaute impliqué
ben, il est créé avant la partie en-tête http. C'est tout

Ben non justement ... j'ai beau regarder dans le répertoire - y ' a rien :? :oops: :cry:

cette class te créé un fichier archive.zip sur ton serveur il me semble, il te suffit de remplacer les lignes headers(..) par le code que tu veux

justement t'as pas une idée de code ?????

A+ :P
 
WRInaute accro
Code:
<?php
    // appel de la classe
    require_once('zip.lib.php');
    // nom du fichier à ajouter dans l'archive
    $filename = 'test.txt';
    
    // contenu du fichier
    $fp = fopen ($filename, 'r');
    $content = fread($fp, filesize($filename));
    fclose ($fp);
    
    // création d'un objet 'zipfile'
    $zip = new zipfile();
    // ajout du fichier dans cet objet
    $zip->addfile($content, $filename);
    // production de l'archive' Zip
    $archive = $zip->file();
voilà, c'est marqué // production de l'archive' Zip
donc là, l'archive est faite. C'est tout
 
WRInaute impliqué
Bonsoir

Merci de ta réponse mais c'est exactement ce que je fais !

D'ailleurs j'ai même repris ton code intégralement ...

et il ne se passe rien ...

Est-ce que l'hébergeur ( ici OVH ) peut empécher la création de .zip sur le serveur :?: :?: :?:

Ceci expliquerait cela car depuis hier je tourne en rond :cry:
 
WRInaute impliqué
Salut. Essaye ceci

Code:
<?php
    // appel de la classe
    require_once('zip.lib.php');
    // nom du fichier à ajouter dans l'archive
    $filename = 'test.txt';
   
    // contenu du fichier
    $fp = fopen ($filename, 'r');
    $content = fread($fp, filesize($filename));
    fclose ($fp);
   
    // création d'un objet 'zipfile'
    $zip = new zipfile();
    // ajout du fichier dans cet objet
    $zip->addfile($content, $filename);
    // production de l'archive' Zip
    $archive = $zip->file(); 
    
    // puis écriture sur le disque
    $fp = fopen( 'archives.zip', 'wb' );
    fwrite( $fp, $archive, strlen($archive) );
    fclose( $fp );

?>

N'oublie pas de d'autoriser php à écrire sur ton serveur ;)
 
WRInaute impliqué
Bonsoir

Merci julienr ...

Mais ça ne marche pas plus :cry:

Il y a bien un fichier zip sur le serveur ( c'est deja une améliration :P ) mais quand je veux le déziper avec winzip ( sur mon ordi après l'avoir uploader ) Winzip me dit que le fichier archive.zip est vide :cry:

est-ce que les zip seraient maudits ? :evil:

enfer et damnation :mrgreen:
 
WRInaute impliqué
J'ai edité le message précédent car après avoir fermé mon smartftp et après l'avoir rouvert, j'ai constaté que le fichier archive était bien là ...

pourtant j'avais bien lancé la commande actualiser avant de fermer et je ne voyais rien :x

par contre tu as vu que j'avais encore un problème, le zip est vide :!:

A+
 
WRInaute impliqué
Dans ce cas la c'est peut etre une erreur du chemin du fichier que tu veux mettre dedans non ?
Si le zip est créer, c'est que le script marche.
Si le zip est vide, c'est que le script n'a rien trouver a mettre dedans :)
 
WRInaute impliqué
sinon y avait aussi ça ...

Code:
system("gzip nomdufichier");

et l'inverse

Code:
system("gzip -d nomdufichier");

Ah la la :!:

la solution est parfois si simple qu'il faut la chercher des heures :!:

voire des jours :!:

voire des mois :P

A+
 
WRInaute impliqué
mouai je suis pas persuadé que ce soit de loin la meilleure solution, system ca impacte une mécanique lourde pour un serveur, après c'est une question de fréquence d'éxécution, c'est sûr
 
WRInaute impliqué
J'ai trouvé ça sur OVH pour sauvegarder ma base de données ...

Code:
system("mysqldump --host=testbackup --user=testbackup --password=testbackup testbackup> testbackup.sql");

system("gzip testbackup.sql");

Le tout s'effectue en moins de temps qu'il ne faut pour le dire :wink:

Bien sûr, c'est effectué une fois par jour, pas plus :lol:
 
Discussions similaires
Haut