[英]How to zip files inside a PHP webjob on Azure?
我正在將一個PHP網站和相關的計划任務移至Azure。
我可以運行大多數Web作業,但是當它嘗試執行命令行“ zip”命令時(尤其是因為Azure沒有此實用程序可用),它尤其會掉線:
exec('zip -9 -j '.$tmpdir.'GROUP-'.date('dmY').'-DMS14.zip '.$zip_images);
提供: 'zip'無法識別為內部或外部命令
是否可以在Azure上運行等效的模塊/命令來壓縮文件?
由於Azure網站在IIS托管的Windows VM上運行,並且“ zip”不是Windows內置命令,因此我們無法在PHP中執行它。
@Rick Rainey的利用PHP內置ZipArchive
類來實現這一點的想法是正確的,我們不需要將其安裝在Azure上,我想補充一些技巧:
1,當我們添加一個Webjob,作業腳本文件將在上傳D:\\home\\site\\wwwroot\\App_Data\\jobs
和被separated
成continuous
和觸發的子文件夾。
2,由於IIS使用FastCGI
處理這些PHP腳本,因此這里不會定義$_SERVER
變量。 因此,我們可以使用文件的絕對目錄代替。
這是我的測試代碼片段:
$zip = new ZipArchive();
$filename = "D:/home/site/wwwroot/test112.zip";
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->addFile("D:/home/site/wwwroot/.user.ini");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.