gpt4 book ai didi

php - 如何在 Azure 上的 PHP webjob 中压缩文件?

转载 作者:行者123 更新时间:2023-12-03 01:52:54 24 4
gpt4 key购买 nike

我正在将 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时,job脚本文件会上传到D:\home\site\wwwroot\App_Data\jobs,并为 分离连续并作为子文件夹触发。

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();

关于php - 如何在 Azure 上的 PHP webjob 中压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32177568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com