Copier un fichier dans un répertoire zip sur ftp avec php

WRInaute occasionnel
Bonjour,

je cherche à copier un fichier .doc dans un répertoire .zip sur serveur ftp
J'arrive bien à copier le fichier dans un répertoire non compressé mais je n'arrive pas à le copier directement dans un répertoire compressé, quelqu'un peut-il m'éclairer sur ce sujet ?

Merci par avance,
 
WRInaute discret
Salut ;)

Tu passe par un logiciel FTP?

Si oui c'est normal, ce n'est pas faisable comme sur un bureau windows..

Soit tu reforme le zip sur windows et tu le reupload

Soit tu doit passer par de la ligne de commande sur ton serveur Nix
ou via language de script (genre php)

Il te faudra les librairies adequates cela dit
 
WRInaute occasionnel
Bon apparement dans mon php.ini les extensions zlib sont bien activées ..

Je dois donc pouvoir le faire ? :roll:
 
WRInaute occasionnel
Oui et j'ai bien fais la lecture ... :roll:

Cependant je reste avec un probléme, j'ai essayé d'excuter le code suivant :

$zip = new ZipArchive;
$res = $zip->open('test.zip');
print "res = $res"; // juste pour voir
if ($res === TRUE)
{
$zip->addFile($document, $document_name);
$zip->close();
echo "ok";
}
else
{
echo "échec";
}

et en fait il ne renvoit aucun résultat !?? 8O

je précise que les extensions zlib sont bien activés :!:
 
WRInaute accro
C'est normal les trois signes "egal" dans ta condition ??? moi j'en aurais mis que deux.


Code:
$zip = new ZipArchive;
$res = $zip->open('test.zip');
print "res = $res"; // juste pour voir
if ($res == true)
{
$zip->addFile($document, $document_name);
$zip->close();
echo "ok";
}
else
{
echo "échec";
}

Sinon, ton "print $res" ne fonctionnera pas je pense, vu que $res n'est pas une chaine de caractères mais une variable obtenue avec la fonction open et qui contient donc plusieurs données (nom, type de fichier, taille, ...)
 
WRInaute occasionnel
oui c'est normal les signes égal .

OK que le $res s'affiche pas mais le résultat de la condition devrait lui s'afficher
 
WRInaute occasionnel
info supplémentaire : Toutes les lignes de codes qui se situe après ce morceau de code ne s'execute pas ... :?

Si quelqu'un à déjà rencontré ce problème avec cette fonction ... 8O
 
WRInaute discret
a mon avis test.zip .. il ne le trouve tout simplement pas, tu dois devoir utiliser un chemin absolu..

genre /home/tonsite/www/zips/test.zip

edit: en lisant la doc ( :lol: ), un mec a posté une gestion plus pointu des codes d'erreurs, sert t'en pour savoir ce qui cloche :

Some older PHP versions used to return false if zip_open failed, and newer versions return the number of error (as integer), so instead of this:

$zip = zip_open($zip_file);
if ($zip) {
// consider zip file opened successfully
}

use this:

$zip = zip_open($zip_file);
if (is_resource($zip)) {
// consider zip file opened successfully
}

You may also use this function to get the error message by it's number:

function zipFileErrMsg($errno) {
// using constant name as a string to make this function PHP4 compatible
$zipFileFunctionsErrors = array(
'ZIPARCHIVE::ER_MULTIDISK' => 'Multi-disk zip archives not supported.',
'ZIPARCHIVE::ER_RENAME' => 'Renaming temporary file failed.',
'ZIPARCHIVE::ER_CLOSE' => 'Closing zip archive failed',
'ZIPARCHIVE::ER_SEEK' => 'Seek error',
'ZIPARCHIVE::ER_READ' => 'Read error',
'ZIPARCHIVE::ER_WRITE' => 'Write error',
'ZIPARCHIVE::ER_CRC' => 'CRC error',
'ZIPARCHIVE::ER_ZIPCLOSED' => 'Containing zip archive was closed',
'ZIPARCHIVE::ER_NOENT' => 'No such file.',
'ZIPARCHIVE::ER_EXISTS' => 'File already exists',
'ZIPARCHIVE::ER_OPEN' => 'Can\'t open file',
'ZIPARCHIVE::ER_TMPOPEN' => 'Failure to create temporary file.',
'ZIPARCHIVE::ER_ZLIB' => 'Zlib error',
'ZIPARCHIVE::ER_MEMORY' => 'Memory allocation failure',
'ZIPARCHIVE::ER_CHANGED' => 'Entry has been changed',
'ZIPARCHIVE::ER_COMPNOTSUPP' => 'Compression method not supported.',
'ZIPARCHIVE::ER_EOF' => 'Premature EOF',
'ZIPARCHIVE::ER_INVAL' => 'Invalid argument',
'ZIPARCHIVE::ER_NOZIP' => 'Not a zip archive',
'ZIPARCHIVE::ER_INTERNAL' => 'Internal error',
'ZIPARCHIVE::ER_INCONS' => 'Zip archive inconsistent',
'ZIPARCHIVE::ER_REMOVE' => 'Can\'t remove file',
'ZIPARCHIVE::ER_DELETED' => 'Entry has been deleted',
);
$errmsg = 'unknown';
foreach ($zipFileFunctionsErrors as $constName => $errorMessage) {
if (defined($constName) and constant($constName) === $errno) {
return 'Zip File Function error: '.$errorMessage;
}
}
return 'Zip File Function error: unknown';
}

$zip = zip_open($zip_file);
if (!is_resource($zip)) {
die(zipFileErrMsg($zip));
}

link : http://fr2.php.net/manual/fr/function.z ... .php#75840
 
Discussions similaires
Haut