1

想要使用 PHP 中的 tar 归档文件夹:

$result = shell_exec("tar cf $sourceFile $sourceFolder -C $source  > /dev/null; echo $?");
var_dump($result);

输出:

string(2) "2 "

事情是为了在> /dev/null; echo $?linux下输出脚本的结果代码;

-在-C $source做任何事情之前更改到正确的文件夹

这真的很奇怪,因为当我从 linux 控制台运行它时,它工作得很好——创建存档,所以这不是权限问题。

其他像“whoami”或“ls”这样的sripts 工作正常。

任何想法是什么意思?

4

2 回答 2

1

也许:shell_exec("/bin/bash tar ....")

于 2010-01-31T21:44:39.177 回答
0

仅出于调试目的将 stderr 重定向到 stdout 并使用 passthru() 来显示完整的输出(可能包括错误消息)。

$cmd = sprintf("tar cf %s %s -C %s 2>&1",
  escapeshellarg($sourceFile),
  escapeshellarg($sourceFolder),
  escapeshellarg($source)
);

echo '<pre>', htmlspecialchars($cmd), ": \n";
flush();
passthru($cmd, $code);
var_dump($code);
echo "</pre>";
于 2010-01-31T21:52:39.033 回答