2010-08-02 70 views
6

我試圖編寫一些PHP代碼在EC2服務器上的Linux機器上運行,它將從S3存儲桶中讀取文件,將它們壓縮並將zip文件重新寫入存儲桶。PHP ZipArchive狀態值的含義是什麼?

即時從EC2實例的本地磁盤上的某些圖像創建簡單的zip存檔,我已經立即遇到問題,我正在使用腳本在線測試PHP手冊中的想法,並且已經嘗試過來自David Walsh的劇本 - http://davidwalsh.name/create-zip-php看起來會很棒。既不結果在實際的壓縮文件,這兩種給我不同狀態結果 -

從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

我沒有看到任何zip文件在我的 '上傳' 文件夾

代碼的第二位我嘗試(我不會張貼在這裏的代碼) - 我通過真實的文件,它返回

zip存檔包含的0

什麼是地位的2個文件狀態消息。我已經通過查看phpinfo()的輸出來檢查是否安裝了正確的庫。和ZIP標題下我看到 -

郵編啓用
擴展版本$編號:php_zip.c,V 1.1.2.43 2008/01/18 0時51分38秒pajoye精通$
郵編版本1.8.11
Libzip版本0.8.0兼容

我檢查與我執行代碼的文件PHP文件的權限和是我嘗試添加ziparchive到該文件夾​​它們被設置爲777。我知道,這不應該停留在777

任何想法,爲什麼我不能看到一個zip文件?狀態值是什麼意思?有沒有一個很好的教程可以使用PHP壓縮Amazon S3存儲桶上的文件?或者提供這種功能的好工具?

歡呼

+0

你已經解決了問題?如果是的話,你能解釋一下嗎?我有同樣的麻煩... – 2012-03-21 17:24:36

回答

1

在我的情況我遇到錯誤代碼11,同時打開讀取一個zip文件。路徑和權限都可以。 我剛剛將DIRECTORY SEPARATOR從反斜槓(\)更改爲正斜槓(/),它的工作原理是。奇怪的是,正斜槓(/)路徑是在Linux的地方,因爲我在Windows Server我的工作2003年