PHP shell tar问题,返回码2

发布于 2024-08-19 23:23:04 字数 456 浏览 8 评论 0原文

想要使用 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”也可以正常工作。

有什么想法吗?

Want to archive a folder using tar from PHP:

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

Output:

string(2) "2 "

the > /dev/null; echo $? thing is for outputing the result code of a script under linux;

the -C $source - changes to the right folder before doing anything

This is really strange because when i run this from linux console, it works just fine - creates the archive, so it's not a permission issue.

Other sripts like "whoami" or "ls" work fine.

Any ideas what does it mean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

殤城〤 2024-08-26 23:23:04

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

Maybe: shell_exec("/bin/bash tar ....")

仙女山的月亮 2024-08-26 23:23:04

仅出于调试目的,将 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>";

Just for debugging purposes redirect stderr to stdout and use passthru() to display the complete output (possibly including error messages).

$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>";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文