2017-08-21 3 views
1

こんにちは私は、PHPのpyautoguiライブラリを使ってPythonスクリプトを実行しています。コマンドラインからPythonスクリプトを実行している間、私は何の問題が発生しませんが、PHPの「もしくはshell_exec」私は、次の取得エラーメッセージを介してそうするとき:apache2の中PHPのPyautoguiでPythonスクリプトを実行

のerror.log:

Traceback (most recent call last): File "/home/pi/Projects/Python/wakeUp.py", line 2, in import pyautogui File "/usr/local/lib/python3.4/dist-packages/pyautogui/init.py", line 115, in from . import _pyautogui_x11 as platformModule File "/usr/local/lib/python3.4/dist-packages/pyautogui/_pyautogui_x11.py", line 160, in _display = Display(os.environ['DISPLAY']) File "/usr/lib/python3.4/os.py", line 633, in getitem raise KeyError(key) from None KeyError: 'DISPLAY'

Pythonスクリプト(テスト私が持っている

<?php 
shell_exec("python3 /home/pi/Projects/Python/test.py"); 
?> 

:の.py):

#!/usr/bin/python3 
import pyautogui 
pyautogui.moveTo(25, 25, duration=1) 
pyautogui.click() 

PHPスクリプト(index.phpを)今週何週間もこの問題に取り組んできましたが、すべてが別々に動作しますが、一緒にまとめてみるとエラーメッセージが表示されます。ありがとう。

答えて

0

あなたはDISPLAY変数を設定していないので、pyautoguiはその画面をどこに表示するのか分かりません。

Apache mod_envを使用して表示変数を設定し、PHP読み込みPyAutoGUIを読み込むことができます。

もう1つのキャッチがあります。おそらく、Apacheがユーザnobodyまたはwww-dataの下で動作している可能性があります。あなたのユーザーは通常何か他のものです。 Apacheによって開始されたプロセスは、あなたのディスプレイにアクセスすることはできません。

あなたは、溶液からApacheとPHPを削除し、純粋なのpythonを使用することができますがinsted:

export DISPLAY=:0 
mkdir cgi-bin 
python3 -m http.server --bind localhost --cgi 8000 

は、CGI-binの中にあなたtest.pyを入れて、ファイルの最後に以下を追加: プリント(「コンテンツ「タイプ:text/html \ n」) print( "OK")

http://localhost:8000/cgi-bin/test.pyにアクセスすると、正しい変数でスクリプトが実行されます。

+0

こんにちは、ありがとう、私はそれを修正するために何をすべきか理解していません。 –

+0

問題を編集して解決策を追加しました。 – ThoriumBR

関連する問題