2014-11-03 32 views
2

我正在嘗試使基本的PHP zip函數在windows服務器上工作,但沒有成功。
即使下面從PHP.net ZIP存檔部分最簡單的例子是不工作:PHP Zip()函數在Windows服務器上不起作用

<?php 
$zip = new ZipArchive; 

if ($zip->open('D:\rootfolder\path_to_files\test.zip') === TRUE) { 

if($zip->addFile('D:\rootfolder\path_to_files\newfile.txt', 'newname2.txt')) { 
    echo 'worked like a charm'; 
} else { 
    echo 'Could not add the file'; 
} 
$zip->close(); 
} else { 
echo 'failed'; 
} 
?> 

在簡單的例子上面,如果zip文件test.zip不存在,它會迴應'失敗',但是如果它確實存在,它會迴應我'像魅力一樣工作',無論要添加的文件(新文件)是否存在。 但最糟糕的是它不會創建zip!

我不認爲它是權限相關的,因爲我可以使用fwrite和其他文件功能成功。

現在我在php info頁面的配置命令部分沒有看到任何提及的zip構建('--with-zip =/hsphere/etc),所以我不能100%確定擴展是否在有正確的,但這裏是一些更詳細的信息關phpinfo()函數:

服務器:的Windows Server 2008 R2標準版Service Pack 1
PHP:版本5.4.14
郵編:是啓用和版本是1.11.0
zlib.output_compression:關閉
zlib.output_compression_level: -1
zlib.output_handler:沒有價值

回答

0

如果你想創建一個新的zip文件,並添加到它NE文件,你必須設置這樣的說法:ZipArchive::CREATE
所以你例子將是如下:

$zip = new ZipArchive; 

if ($zip->open('C:\xampp\htdocs\StackOverflow\test.zip', ZipArchive::CREATE) === TRUE) { 

    if($zip->addFile('C:\xampp\htdocs\StackOverflow\newfile.txt', 'newname2.txt')) { 
     echo 'worked like a charm'; 
    }else { 
     echo 'Could not add the file'; 
    } 
    $zip->close(); 
}else { 
    echo 'failed'; 
} 

希望幫助:)

+0

這工作!非常感謝。 雖然PHP.net沒有提到它作爲示例中的要求,但它們給出的有趣之處在於: http://us2.php.net/manual/en/ziparchive.addfile.php 並且它也沒有必要出於某種原因,我只在Windows服務器上測試過的Linux服務器上。但再次感謝它現在的作品。 – 2014-11-03 22:49:08

相關問題