我在在线运行php脚本时正在运行python脚本。由于调试,我制作了一个PHP脚本:
<?php
echo shell_exec("python ../reader.py");
如果使用php test.php
运行它(在Linux上),它将工作并输出一些数据。但是,如果我尝试访问Web上的输出,它将返回一个空字符串。
reader.py需要8秒(因此不应达到时间限制)。
reader.py:
#!/usr/bin/env python
import sys
import Adafruit_DHT
sensor = Adafruit_DHT.DHT11;
pin = 4;
humiture, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humiture is not None and temperature is not None:
print("{\"temperature\": " + str(temperature) + ", \"humiture\":" + str(humiture) + "}")
else:
print("fail")
诸如ls
之类的其他一些命令将始终有效。
我认为持续时间有问题,但是如何解决这个问题?
解决方案: 解决了我授予权限的问题:
sudo chmod g+s /var/www
sudo chmod 775 /var/www
sudo chown -R www-data:www-data /var/www
答案 0 :(得分:2)
可能是您的Web服务器以该用户身份运行,并且该脚本从网页运行时继承了该脚本的权限,不允许其访问硬件,并返回空的温度和湿度-或根本没有返回。
另一种可能性是,PHP脚本在您未想到的其他地方执行,并且找不到要启动的reader.py脚本。
尝试使用“ ls ../reader.py”查看脚本是否可访问,然后运行
"python ../reader.py 2>&1"
还可以从python生成中收集任何错误。顺便说一句,python可执行文件是否完全可以访问?您是否尝试过仅显示“ Hello world”的空白reader2.py?