2

PHP で zip アーカイブを作成できません。常にZIPARCHIVE::ER_MULTIDISKを返します。

$fileName=$_SERVER['DOCUMENT_ROOT'].'/temp/temp.zip';
$zip = new ZipArchive();
$err=$zip->open($fileName,ZipArchive::CREATE);
$zipFileFunctionsErrors = array(0=>'OK',
        ZIPARCHIVE::ER_MULTIDISK => 'Multi-disk zip archives not supported.',
        ...,
        ...
);
echo $zipFileFunctionsErrors[$err];
$zip->addFromString('empty.txt', '');
$zip->close();

出力

Multi-disk zip archives not supported

zip ファイルが作成されませんでした

ローカルマシンコードでうまく動作します

4

2 に答える 2

3

あなたの問題はphpバージョンにあると思いますが、次のように聞こえます:(php.netコメントから):

一部の古い PHP バージョンは、zip_open が失敗した場合に false を返し、新しいバージョンはエラーの数を (整数として) 返すため、次の代わりに:

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

これを使って:

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

配列から最初の非数値インデックスを取得しているように聞こえます。おそらく「1」が「true」であるため、エラー配列に要素「1」が表示されます

于 2013-03-13T09:28:36.593 に答える
0

まず、サーバー側のphpでファイルが作成できるか確認します。IDに問題がある可能性があります。php は ie: apache id で動作する可能性があり、id は yourFtpId です。

次に、zip ライブラリがサーバー上の php でサポートされているかどうかを確認します。phpinfo でそれを確認できます。

次に、サーバー構成で php からの zip コマンドが許可されているかどうかを確認します。

これらの診断が終了したときに、これらに問題が見つかった場合は、サーバー管理者に連絡して解決する必要があります。

于 2013-03-13T09:26:41.393 に答える