2016-05-07 6 views
1

Codeigniterコントローラの機能からPythonファイルを実行するのに問題があります。CodeigniterからPythonファイルを実行する

〜/アプリケーション/コントローラ/ 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"); 

答えて

2

すなわち、pythonにバイナリとscript完全なパスを提供します

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

pythonバイナリは、Apacheのユーザー(apache/www-user)のPATHにすでにある場合は、あなたが完全なパスを無視することができ。

+1

はそれが解決した、ありがとう:) – BenYacine

+0

のみ追加いくつかのPHP環境は、標準のユーザアカウントで設定された 'PATH'をミラーリングしないということです。それらは、 'www-user'のようなものの下で動作します。これは、最小限のパスが設定されています。 – halfer

+0

私の経験に基づいて、 'python'はすでに' apache'ユーザの 'PATH'にありますが、私はそれに言及して私の答えを更新しました。 –

-1

はい私はそれのような問題を抱えており、Pedro Lobitoのお返事ありがとうございます。 ルートフォルダーからCIからPythonファイルを呼び出すにはフルパスが必要です。このよう

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

*として

のsudo -uルート-Sは不要rootのパスワードを使用して、root権限を使用するためのコマンドです:D

関連する問題