0

我正在使用 shell_exec() 命令从 php 调用 shellscript。以下是 shell 脚本的简单版本:

args[0] = "tom"
echo "hello"
echo "${args[0]}"

当我从终端运行此脚本时,它会在终端中提供以下输出:

hello
tom

而当我使用 shell_exec() 从 php 调用它时,只打印 "hello" 而不是 "tom" 。IE; 从 php.ini 调用脚本时,变量赋值不起作用。为什么会发生这种情况,我该如何解决。

任何帮助表示赞赏。

4

2 回答 2

1

可能 PHP 使用 而不是 Bash 执行脚本sh;因此,shell 不支持数组(这是 Bash 功能)。

解决方法:不要使用数组,或者在脚本上显式调用 Bash。(如果 PHP 理解 shebangs,那么将正确的 shebang 行作为脚本的第一行可能就足够了。)

于 2013-07-12T07:02:33.993 回答
0

首先,args[0] = "tom"不应该有空间。应该是args[0]="tom" (我不确定这是不是问题,但值得一试)。

在你的代码末尾试试这个,看看哪个 shell 正在运行你的脚本。

echo "`ps -p $$`"

尝试在终端和 PHP 脚本上查看它是否相同。

于 2013-07-12T07:18:14.277 回答