PHP-shell_exec似乎有时间限制

时间:2018-12-25 14:49:27

标签: php shell time

我在在线运行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

1 个答案:

答案 0 :(得分:2)

可能是您的Web服务器以该用户身份运行,并且该脚本从网页运行时继承了该脚本的权限,不允许其访问硬件,并返回空的温度和湿度-或根本没有返回。

另一种可能性是,PHP脚本在您未想到的其他地方执行,并且找不到要启动的reader.py脚本。

尝试使用“ ls ../reader.py”查看脚本是否可访问,然后运行

"python ../reader.py 2>&1"

还可以从python生成中收集任何错误。顺便说一句,python可执行文件是否完全可以访问?您是否尝试过仅显示“ Hello world”的空白reader2.py?