从php调用shell脚本 - 无法正常工作

时间:2013-07-12 06:53:37

标签: php linux shell

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

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

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

hello
tom

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

感谢任何帮助。

2 个答案:

答案 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相同。