【发布时间】:2018-12-25 14:49:27
【问题描述】:
我正在运行 python 脚本,同时在线运行 php 脚本。因为调试,我做了一个 php 脚本:
<?php
echo shell_exec("python ../reader.py");
如果使用php test.php 运行它(在Linux 上),它可以工作并输出一些数据。但是如果我尝试访问网络上的输出,它会返回一个空字符串。
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
【问题讨论】:
-
这太不具体了。向我们展示一些代码,例如调用 php 脚本的位置以及它的作用。
-
确保路径或文件权限没有任何问题。从专门使用绝对路径开始。当您使用命令行调用脚本时,它将使用您登录的用户和环境。如果您通过 Web 服务器执行脚本,它将使用 Web 服务器正在使用的用户和环境(如使用 Apache 时的 www-root)。
-
你应该可以自己轻松回答超时问题,只需创建一个需要一定时间的脚本。
-
使用 php
$out = system(....)可能会有所帮助。它是连续的,所以代码将等到结束来填充 $out 变量。 -
@digijay 我更新了我的帖子