从调用shell脚本时工作不正常


Calling a shellscript from not working correctly

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

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

当我从终端运行这个脚本时,它在终端中给出以下输出:

hello
tom

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

感谢您的帮助。

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

解决方法:不要使用数组,也不要在脚本上显式地插入Bash。(如果PHP理解shebang,那么有一个正确的shebang行作为脚本的第一行就足够了。)

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

在代码末尾尝试一下,看看哪个shell正在运行您的脚本。

echo "`ps -p $$`"

在终端和PHP脚本上都尝试一下,看看它是否是同一个shell。