首页 > 解决方案 > 从 PHP 调用 Bash 脚本没有输出正确的值

问题描述

我正在尝试从 PHP 调用 bash 脚本。当我从命令行在我的文本文件上运行这个 bash 脚本时,我得到了所需的输出。但是,通过 PHP,它什么也不输出。
以下是我的 PHP 代码。

$output = shell_exec("path/to/script.sh tmp/file.txt");
echo $output;

听起来 path/to/script 是 bash 脚本的路径,而 tmp/file.txt 是脚本的参数。它的输出是空白的,但是当我在命令行中使用相同的输入运行 bash 脚本时,它会正确执行。为什么是这样?

标签: phpbash

解决方案


如果没有看到 script.sh 就很难回答,但是我可以看到 shell_exec 在失败时输出 null 。

您可以尝试使用该exec()函数来查看脚本的退出代码。 php手动执行()

所以代码是:

exec("path/to/script.sh tmp/file.txt", $output);
echo $output;

您可能会发现这是一个权限问题,阻止了进程对其进行更改。

尝试更改文件权限chmod 777 tmp/file.txt


推荐阅读