我有一个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命令仅在开始时停止,不会继续。
谢谢!
答案 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 /中。我希望这适合你:)