-1

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

我正在尝试运行一个名为 Iron worker 的特殊宝石。

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

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

 ------> Creating client

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

如果我做一个 print_r($output); http://pastebin.com/4SLDqQyX

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

谢谢 !

4

2 回答 2

1

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

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

于 2013-10-28T11:36:36.320 回答
0

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

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

哦,我忘记了 system() 部分..

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

我建议将程序放在 /home/foo/ 中。我希望这对你有用:)

于 2013-10-28T09:33:21.050 回答