通过 PHP exec() 创建一个 tgz 文件


Creating a tgz file through PHP exec()

>我正在尝试通过 PHP exec(); 函数在 AJAX Web 界面中创建一个 .tgz 文件,但是,我的代码没有生成任何文件,也没有写出任何错误。

这段代码在 shell 中工作:

tar cvfz destination/testfolder.tgz source/testfolder

我在 PHP 中将destination/testfolder.tgzsource/testfolder设置为变量,因为它们会根据用户输入而变化,所以我的代码看起来像这样:

$q=$_GET["q"];
$part = explode("/", $q);
$source = $q;
$dest = "destination/" .$part[1].".tgz";
exec("tar cvfz " . $dest . " " . $source);

我已经回显了"tar cvfz " . $dest . " " . $source并将其复制/粘贴到shell中,这有效,所以我对自己做错了什么感到困惑。

问题是,对于@David提到的相同安全问题,PHP exec() 函数的权限非常有限——它甚至无法创建文件。与其将文件修改为 777,这即使是暂时也非常危险,我建议您在沙箱或任何无害的位置创建一个临时文件夹,然后将其拥有给 PHP 解释器的用户/组的用户/组,具有一些限制性权限(例如,目录为 chmod 700,内部文件为 600)。