【发布时间】:2016-10-03 00:24:33
【问题描述】:
现在我知道这个问题已经被问过好几次了,但我已经听从了大家的建议,但我仍然很困惑。
我有一个 shell 脚本 (/var/www/scripts/test.sh):
ssh_con="ssh-user@x.x.x.x"
key="/home/user/.ssh/key"
echo "export start"
ssh -i $key $ssh_con "php /file/location/ service:batch:job export --env=prod"
echo "export complete"
脚本具有以下权限:
-rwxrwxrwx 1 www-data www-data 1792 Jun 3 10:44 bash_script.sh*
我在php中运行的代码是:
try {
$outbuf=shell_exec("sh /var/www/scripts/test.sh");
echo "<pre>".$outbuf."</pre>";
}catch (Exception $e) { //while an error has occured
echo "==> Error: ".$e->getMessage();
exit();
}
当我从网络浏览器查看时,我得到:
export start
export complete
但是,ssh 没有运行。
我可以确认 php.ini 允许 exec 和 shell_exec。
我觉得我错过了一些明显的东西。
【问题讨论】:
-
您是否尝试在终端中运行您的 shell 脚本?
-
是的..它可以正常工作。 @weigreen
-
在打电话给
shell_exec();之前试试putenv("PATH", "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin");。 -
是你完成的shell脚本吗?没有标题行?
-
你的 php 在哪个用户上运行。它对你的 shell 脚本有权限吗?