PHP exec()无法正常工作但在SSH IronWorker中工作

时间:2013-10-28 09:27:29

标签: php ruby debian exec iron.io

我有一个php exec()命令的奇怪问题。

我正在尝试运行一种叫做铁工人的特殊宝石。

exec('iron_worker upload Renode 2>&1',$output,$error);
var_dump($output); 

这是我试图运行的命令,但不幸的是它没有将代码上传到服务,它只显示

 ------> Creating client

相反,当我使用SSH运行命令时,它工作正常,找到文件并上传代码。

如果我执行print_r($ output); http://pastebin.com/4SLDqQyX

可能是什么问题? php exec命令仅在开始时停止,不会继续。

谢谢!

2 个答案:

答案 0 :(得分:1)

通过对iron_worker源的分析,它看起来使用HOME变量环境并阻塞没有设置HOME env变量的地方。

我建议你在用PHP运行脚本之前用putenv("HOME=/home/my_user/");设置变量。

答案 1 :(得分:0)

这个程序似乎需要一个HOME目录来运行。你必须将它添加到sudoers文件(其中http是webserver,foo是机器上的用户):

http ALL=(foo) NOPASSWD: /path/to/program/or/script

哦,我忘了系统()部分..

system("sudo -u foo /path/to/program/or/script");

我建议将程序放在/ home / foo /中。我希望这适合你:)