【问题标题】:PHP exec() not working properly but working in SSH IronWorkerPHP exec() 无法正常工作但在 SSH IronWorker 中工作
【发布时间】:2013-10-28 09:27:29
【问题描述】:

我在使用 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 命令只在开始处停止,不再继续。

谢谢!

【问题讨论】:

    标签: php ruby debian exec iron.io


    【解决方案1】:

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

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

    【讨论】:

    • 它确实解决了我的问题!添加 putenv 后,我的代码出现了工作问题。谢谢!
    【解决方案2】:

    这个程序似乎需要一个 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/ 中。我希望这对你有用:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2014-10-13
      相关资源
      最近更新 更多