1

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

此代码在 shell 中工作:

tar cvfz destination/testfolder.tgz source/testfolder

我在 PHP 中设置destination/testfolder.tgzsource/testfolderas 变量,因为它们会根据用户输入而变化,所以我的代码如下所示:

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

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

4

1 回答 1

1

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

于 2012-08-12T20:42:12.067 回答