当前位置: 首页 > 知识库问答 >
问题:

从PHP执行Python脚本

楮法
2023-03-14

您好,我正在尝试在apache2服务器上运行Raspberry Pi,使用PHP中的pyautogui库执行Python脚本。从命令行执行Python脚本时,我没有遇到任何问题,但通过PHP的“shell_exec”执行时,我收到以下错误消息:

错误登录apache2:

回溯(最近一次调用):文件“/home/pi/Projects/Python/wakeUp.py”,第2行,在导入pyautogui文件“/usr/local/lib/python3.4/dist packages/pyautogui/init.py”中,第115行,在from中。在getitem raise KeyError(key)from None KeyError:“display”中的第160行,将pyautogui_x11作为平台模块文件“/usr/local/lib/python3.4/dist packages/pyautogui/pyautogui_x11.py”导入到第633行“/usr/lib/python3.4/os.py”

Python脚本(test.py):

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

PHP脚本(index.php):

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

我已经在这个问题上纠缠了好几个星期了,每件事都是分开进行的,但是当我把它们放在一起时,我得到了错误信息,如果有人能帮助我,我将非常感激。谢谢

共有1个答案

柯树
2023-03-14

您没有设置显示变量,因此pyautogui不知道在哪里显示其屏幕。

您可以使用Apachemod_env来设置显示变量,并加载PHP加载PyAutoGUI。

还有另一个问题:Apache可能是在用户无人www-data下运行的。您的用户通常是其他用户。Apache启动的任何进程都无法访问您的显示器。

您可以从解决方案中删除Apache和PHP,并使用纯python insted:

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

把你的测试出来。py在cgi bin中,并将其添加到文件末尾:print(“内容类型:text/html\n”)print(“确定”)

访问http://localhost:8000/cgi-垃圾箱/测试。py将使用正确的变量运行脚本。

 类似资料:
  • 问题内容: 我在树莓派上有一个带有2个按钮(打开和关闭)的PHP网页,“打开”按钮重定向到On.php,“关闭”按钮重定向到Off.php在“ / usr / lib / cgi-bin”中,我有一个python脚本我想执行(script.py),我可以通过在终端上键入以下内容来完美地执行它 如果我从终端执行此操作,它将起作用。 问题是我的“ / var / www”文件夹中的PHP文件(On.p

  • 我想在macos上使用apache2从PHP文件执行Python脚本。我能够执行简单的python脚本,如: 从PHP: 巨蟒 输出是: 但当我尝试导入以下包时: 我得到: 我的问题是,有人知道: 1–我如何使这些(以及任何其他)软件包工作? 2–shell_exec当前正在执行python2。如何添加Python 3?(如果我编写python3而不是python将无法工作)

  • 问题内容: 我有一个简单的PHP函数,该函数应在调用时执行Pyton脚本。我已经在我的php程序中多次尝试了这种功能,但是这次以某种方式该功能根本不执行python脚本。当我从命令提示符下访问脚本并运行时,它将成功执行。我要提到的一件事是,该脚本具有python的NLTK库的一些认真实现,并且执行和执行其操作(即数据处理并存储到db)需要20秒钟以上。执行延迟是否会导致此问题,或者这次我还缺少其他

  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了

  • 问题内容: 我正在Raspberry Pi上的Apache服务器上运行PHP文档,并且希望它在单击按钮时运行文件。我在命令下放置了一些echo命令,以使文件运行,并且该文件可以打印出来,但文件无法运行。index.php文件和lightson.py和lightsoff.py文件都在同一目录( / var / www )中,我在这两个文件的顶部都添加了 #!/ usr / bin / env pyt