I'm running a python script while running a php script online. Because of debugging I made one php script:
<?php
echo shell_exec("python ../reader.py");
If run it (on linux) with php test.php
it works and outputs some data. But if I try to access the output on the web, it will give an empty string back.
reader.py takes 8 seconds (so no time limit should be reached).
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")
Some other commands like ls
will work always.
I think there is a problem with the duration but how can I pass this issue?
Solution: Solved my problem giving permissions:
sudo chmod g+s /var/www
sudo chmod 775 /var/www
sudo chown -R www-data:www-data /var/www
Chances are that the user your Web server runs as, and whose permissions the script inherits when it is run from a web page, is not allowed to access the hardware, and returns an empty temperature and humidity - or nothing at all.
Another possibility is that the PHP script executes somewhere else than you think, and finds no reader.py script to launch.
Try using "ls ../reader.py" to see whether the script is accessible, and run
"python ../reader.py 2>&1"
to also collect any errors from the python spawning. By the way, is the python executable reachable at all? Have you tried an empty reader2.py that only prints "Hello world"?