我正在使用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。