PHP - shell_exec похоже на ограничение по времени - PullRequest
0 голосов
/ 25 декабря 2018

Я запускаю скрипт на python, когда запускаю скрипт php онлайн.Из-за отладки я сделал один php-скрипт:

<?php
echo shell_exec("python ../reader.py");

Если запустить его (на linux) с php test.php, он работает и выводит некоторые данные.Но если я попытаюсь получить доступ к выводу в Интернете, он вернет пустую строку.

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 голосов
/ 26 декабря 2018

Скорее всего, пользователь, от имени которого работает ваш веб-сервер, и чьи разрешения сценарий наследует при запуске с веб-страницы, не имеет доступа к оборудованию и возвращает пустую температуру и влажность - или вообще ничего.

Другая возможность состоит в том, что скрипт PHP выполняется где-то еще, чем вы думаете, и не находит сценария reader.py для запуска.

Попробуйте использовать «ls ../reader.py», чтобы увидеть,скрипт доступен и запускает

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

, чтобы также собирать любые ошибки при порождении питона.Кстати, исполняемый файл Python вообще доступен?Вы пробовали пустой reader2.py, который печатает только "Hello world"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...