gpt4 book ai didi

php - 无法通过 PHP 调用 python 脚本

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:33 26 4
gpt4 key购买 nike

我已经被困了几天了。我正在尝试从 PHP 调用一个简单的 python 脚本。对于我的一生,我无法弄清楚问题是什么。我已经使用 chmod +x 使 onoff.py 脚本可执行。

我可以像这样从命令行运行脚本:

pi@raspberrypi:/var/www/html $ python onoff.py
LED on
LED off

我的问题是当我尝试从 PHP 调用脚本时。我什么也没得到。

我的Python脚本:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(18,GPIO.OUT)
print "LED on"
GPIO.output(18,GPIO.HIGH)
time.sleep(1)
print "LED off"
GPIO.output(18,GPIO.LOW)

我的 PHP 脚本:

<?php 
$command = escapeshellcmd('python /var/www/html/onoff.py');
$output = shell_exec($command);
echo $output;
?>

非常感谢任何帮助!

编辑:

如果我将 onoff.py 脚本更改为简单的 while 循环,例如:

#!/usr/bin/python
x=1
while (x<10):
print x
x=x+1

浏览器上的输出是:

 1 2 3 4 5 6 7 8 9

我只是不明白为什么循环会运行,但原始 python 代码没有输出。

编辑2:

好的,所以我采取了不同的方法并尝试查看代码在哪里失败。我一次添加一些代码。请参阅以下内容。

#!/usr/bin/python
import random
import time
import RPi.GPIO as GPIO

randomNumber = random.randint(1, 20)
GPIO.setmode(GPIO.BCM)
#GPIO.setup(18,GPIO.OUT)
print randomNumber

现在,当我运行 PHP 时,它会显示一个随机数,因此我知道 python 脚本正在运行。当我取消注释 GPIO.setup(18,GPIO.OUT) 并运行 php 时,我得到一个空白屏幕。我不知道为什么这会让脚本失败。

最佳答案

shell_exec() 仅在 $command a) 时返回字符串。运行正常并假设 b)。它会将其响应发送到 STDOUT。

使用exec()并向其传递您的命令、一个整数$code和一个空数组$response,两者都由PHP 通过引用作为参数。

运行你的命令:

$command = escapeshellcmd('/path/to/python /var/www/html/onoff.py');
$response = array();
$code = 0;
exec($command, $response, $code);
var_dump($code, $response);
die;

您现在应该了解 PHP 内部实际提供了什么以及 Python 脚本不起作用的原因。

关于php - 无法通过 PHP 调用 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com