ホスト (およびおそらくインターネット接続) に問題があります。filezilla を使用して、いくつかの巨大な .zip を Web サイトにアップロードし (各 .zip の重量は約 500Mo)、アップロードが終了する前に接続が閉じます。だから、私は自分の写真を含むフォルダーをアップロードすることを考えました (そのように、filezilla は 1 つの巨大なファイルではなく、いくつかの小さなファイルをアップロードします)。次に、php スクリプトを通過してこれらのアーカイブを作成します。
ここに私がしたコードがあります:
/*
params :
string $nom_archive: archive's name in '.zip' (ex. 'archive.zip', 'test.zip', etc.)
string $adr_dossier: the path of the folder to archive (ex. 'images', '../dossier1/dossier2', etc.)
string $dossier_destination : path of the folder where we will copy/paste the archive (ex. 'images/zip', '../archives', etc.)
DOn't change the params $zip and $dossier_base
*/
function zipper_repertoire_recursif($nom_archive, $adr_dossier, $dossier_destination = '', $zip=null, $dossier_base = '') {
if($zip===null) {
$zip = new ZipArchive();
if($zip->open($nom_archive, ZipArchive::CREATE) !== TRUE) {
return false;
}
}
if(substr($adr_dossier, -1)!='/') {
$adr_dossier .= '/';
}
if($dossier_base=="") {
$dossier_base=$adr_dossier;
}
if(file_exists($adr_dossier)) {
if(@$dossier = opendir($adr_dossier)) {
while(false !== ($fichier = readdir($dossier))) {
if($fichier != '.' && $fichier != '..') {
if(is_dir($adr_dossier.$fichier)) {
$zip->addEmptyDir($adr_dossier.$fichier);
zipper_repertoire_recursif($nom_archive, $adr_dossier.$fichier, $dossier_destination, $zip, $dossier_base);
}
else {
$zip->addFile($adr_dossier.$fichier);
}
}
}
}
}
if($dossier_base==$adr_dossier) {
$zip->close();
if($dossier_destination!='') {
if(substr($dossier_destination, -1)!='/') {
$dossier_destination .= '/';
}
if(rename($nom_archive, $dossier_destination.$nom_archive)) {
return true;
}
else {
return false;
}
}
else {
return true;
}
}
}
そして、私は自分の関数をそのように呼び出します:
zipper_repertoire_recursif('Myriam&Fabien_byGFernandez_Originales.zip', './Myriam&Fabien/Photos/originales/photos_originales', './Myriam&Fabien/Photos/originales')
しかし、それは機能しません。理由はわかりません。
サーバーでzipが有効になっているかどうかを確認しましたが、有効です。私の問題について何か考えがありますか?ZipArchive を間違った方法で使用している可能性がありますが、何が間違っていたのかわかりません。私を手伝ってくれますか?
どうもありがとうございました。