0

ホスト (およびおそらくインターネット接続) に問題があります。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 を間違った方法で使用している可能性がありますが、何が間違っていたのかわかりません。私を手伝ってくれますか?

どうもありがとうございました。

4

0 に答える 0