【问题标题】:Executing a Python file from Codeigniter从 Codeigniter 执行 Python 文件
【发布时间】:2016-09-02 18:26:29
【问题描述】:

我在从 Codeigniter 控制器的函数中执行 Python 文件时遇到了一些麻烦。

~/application/controllers/Lights.php:

header("Access-Control-Allow-Origin: *");
class Lights extends CI_Controller {
    public function __construct() {
        parent::__construct ();
        $this->load->helper ( array ('url', 'form') );
    }
    public function turnOn() {
        system('sudo python test.py > /dev/null 2>/dev/null &');
    }
}

但是当我尝试执行系统调用时,例如:

system("sudo gpio mode 15 out");

这很好用。

【问题讨论】:

    标签: php python codeigniter command-line raspberry-pi2


    【解决方案1】:

    提供python二进制和script完整路径,即:

    system('/full/path/to/python /full/path/to/test.py > /dev/null 2>/dev/null &');
    

    如果 python 二进制文件已经在您的 apache 用户 (apache/www-user) 的 PATH 上,您可以忽略完整路径。

    【讨论】:

    • 谢谢,这就是解决方案:)
    • 我在这里要补充的唯一一点是,一些 PHP 环境不反映标准用户帐户中配置的 PATH。它们将在www-user 之类的东西下运行,这将配置一个更小的路径。
    • 根据我的经验,python 已经在apache 用户的PATH 上,不过,我已经更新了我的答案,提到了这一点。
    【解决方案2】:

    是的,我有这样的问题,感谢 Pedro Lobito 的回答。 需要一个完整的路径才能从根文件夹中的 CI 调用 python 文件。

    比如

    system('sudo -u root -S python /var/www/4led/turnon1.py');
    

    *sudo -u root -S 是使用root权限的命令,不需要root密码:D

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2013-01-23
      • 2016-09-24
      • 2018-07-27
      • 1970-01-01
      相关资源
      最近更新 更多