7

私は、S3バケットからファイルを読み取り、zipしてから、zipファイルをバケットに書き戻すEC2サーバー上のLinuxボックスで実行するPHPコードを書き始めたところです。

EC2インスタンスのローカルディスク上のいくつかの画像から単純なzipアーカイブを作成することでさえ問題にすぐに遭遇しました。スクリプトを使用して、オンラインでPHPマニュアルのアイデアをテストし、Davidのスクリプトも試しました。 Walsh- http://davidwalsh.name/create-zip-phpこれは素晴らしいと思われます。どちらも実際のzipファイルにはならず、どちらも異なるステータス結果を表示します-

PHPマニュアルの最初のスニペット(変数$ thisdirを追加します)-

<?php
$zip = new ZipArchive();
$filename = "test112.zip";
$thisdir = "/uploads/";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
    exit("cannot open <$filename>\n");
}    
$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
?>

出力=

numfiles:2ステータス:11

'uploads'フォルダにzipファイルが表示されません

私が試したコードの2番目のビット(ここにコードを投稿しません)-実際のファイルを渡すと、

zipアーカイブには、ステータスが0の2つのファイルが含まれています

ステータスメッセージとは何ですか。phpinfo()の出力を見て、正しいライブラリがインストールされているかどうかを確認しました。そしてZIPの見出しの下に私が見る-

Zip対応
拡張バージョン$Id:php_zip.c、v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp$
Zipバージョン
1.8.11Libzipバージョン0.8.0互換

実行しているコードを使用してファイルPHPファイルのアクセス許可を確認しました。これらは、zipアーカイブを追加しようとしているフォルダーと同様に777に設定されています。私はこれが777のままであってはならないことを知っています。

zipファイルが表示されない理由はありますか?ステータス値はどういう意味ですか?PHPを使用してAmazonS3バケット上のファイルを圧縮するための優れたチュートリアルはありますか?またはこの機能を提供するための優れたユーティリティ?

乾杯

4

2 に答える 2

14

ここで見つけることができます: http://www.php.net/manual/en/zip.constants.php

エラー11は「ファイルを開けません」

于 2010-09-17T08:00:53.690 に答える
1

私の場合、読み取り用に zip ファイルを開いているときにエラー コード 11 が表示されました。パスと権限は問題ありません。DIRECTORY SEPARATOR をバックスラッシュ (\) からスラッシュ (/) に変更したところ、うまくいきました。奇妙なことに、私は Windows Server 2003 で作業しているため、フォワード スラッシュ (/) パスが Linux にあるということです。

于 2013-04-14T12:33:52.260 に答える