Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php调用shellscript-工作不正常_Php_Linux_Shell - Fatal编程技术网

从php调用shellscript-工作不正常

从php调用shellscript-工作不正常,php,linux,shell,Php,Linux,Shell,我正在使用shell_exec()命令从php调用一个shell脚本。以下是shell脚本的简单版本: args[0] = "tom" echo "hello" echo "${args[0]}" 当我从terminal运行此脚本时,它在terminal中提供以下输出: hello tom 然而,当我使用shell_exec()从php调用它时,只打印“hello”,而不是“tom”。ie;从php调用脚本时,变量赋值不起作用。为什么会发生这种情况,我如何解决这个问题 非常感谢您的帮助。PH

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

args[0] = "tom"
echo "hello"
echo "${args[0]}"
当我从terminal运行此脚本时,它在terminal中提供以下输出:

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


非常感谢您的帮助。

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

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

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

在代码末尾尝试此操作,以查看哪个shell正在运行脚本

echo "`ps -p $$`"

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

shell_exec(“path/to/file.sh”)是我们如何调用脚本的,这意味着我们将它作为sh执行,对吗?同样,添加一个适当的shebang可能足以修复它。