我使用shell_exec()命令从php调用一个shellcript。以下是shell脚本的简单版本:
args[0] = "tom"
echo "hello"
echo "${args[0]}"
当我从终端运行此脚本时,它在终端中提供以下输出:
hello
tom
然而,当我使用shell_exec()从php调用它时,只打印“hello”而不是“tom”。即;从php调用脚本时,变量赋值不起作用。为什么会发生这种情况,我该如何解决这个问题。
感谢任何帮助。
答案 0 :(得分:1)
可能PHP用sh
执行脚本,而不是Bash;因此,shell不支持数组(它们是Bash功能)。
解决方法:不要使用数组,也不要在脚本上明确地使用Bash。 (如果PHP理解shebangs,拥有正确的shebang行作为脚本的第一行可能就足够了。)
答案 1 :(得分:0)
首先,args[0] = "tom"
不应该有空格。它应该是args[0]="tom"
(我不确定这是问题,但值得尝试)。
在代码末尾尝试此操作,以查看哪个shell正在运行您的脚本。
echo "`ps -p $$`"
尝试使用终端和PHP脚本来查看它是否与shell相同。