通过PHP exec()创建tgz文件

时间:2012-08-12 20:34:14

标签: php

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

此代码适用于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中,这有效,所以我对我做错了很困惑。

1 个答案:

答案 0 :(得分:1)

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