Прочный скрипт на Python на Raspberry PI от PHP-контроллера Apache Laravel - PullRequest
0 голосов
/ 10 октября 2019

У меня есть скрипт на python для малины в /home/pi/Test.py, который можно вызвать из php-контроллера laravel.

На Raspberry установлен Raspian, Apache, PHP 7.3, Python

Я попробовал это через cmdline

python Test.py 4444> работает

через локальный php-сервер

php artisan serve 

/ localhost: 8000 / setValue / 666> работает, returnvalue 0

Затем я развернул приложение в каталоге Apache2

/var/www/html/Project

Там я снова позвонил в Службу

localhost:80/Project/setValues/666 > nothing, returnvalue 1

вот мой код

chdir('/home/pi');
$cmd('python Test.py ' . $param);
exec($cmd,$out,$status);
return $status

При выполнении этого с сервера отладки php возвращается «0», из apache «1»

Я попробовал

exec ()
shell_exec()
passthrough()

Все то же самое - работает с локального сервера, а не с Apache.

Я изменил владельца на www-data и изменил права на 775 в обоихСценарий Python и проект laravel, я также добавил www-данные как sudoer, но ничего не получилось.

Я думаю, что это должно что-то делать с правами на исполняемый файл, но что еще делать?

РЕДАКТИРОВАТЬ: Iнашел заметку в Apache error.log

GPIO.setup (DATA, GPIO.OUT) RuntimeError: не запускаетсяНа RPi!

кажется, что www-данные не могут получить доступ к настройкам GPIO, хотя пользователь «pi» может, что означает - как включить www-data, чтобы иметь те же права пользователя »пи "?

1 Ответ

0 голосов
/ 10 октября 2019

Я нашел ответ после нескольких часов борьбы:

сначала добавьте www-данные в группу gpio

>sudo adduser www-data gpio > not working

, а затем я обновил прошивку до

> sudo rpi-update

Наконец-то это сработало с сервера Apache. Благодаря этой публикации https://raspberrypi.stackexchange.com/questions/40105/access-gpio-pins-without-root-no-access-to-dev-mem-try-running-as-root и этому пользователю https://raspberrypi.stackexchange.com/users/13650/joan это сработало. Большое спасибо!

...