При включении булавки с библиотекой PiPHP я увидел нечто действительно странное. Когда я загрузил свою малину и попытался открыть страницу, которая включала контакт 2, я получил ошибку.
Неустранимая ошибка: Uncaught RuntimeException: fopen (/ sys / class / gpio / gpio2 / direction): не удалось открыть поток: в доступе отказано в /var/www/html/vendor/piphp/gpio/src/FileSystem/FileSystem.php:69
Но потом я обновил страницу, и она заработала.
Это проблема, потому что я пытаюсь запустить скрипт php при запуске, чтобы включить контакты, которые сохраняются в базе данных. Код выглядит так:
$services = $database->select('service','*',['onEvent' => 0]);
foreach ($services as $service){
$pin = intval($service['pin']);
$pin = $gpio->getOutputPin($pin);
if ($service['status'] == "1")
$pin->setValue(PinInterface::VALUE_HIGH);
else
$pin->setValue(PinInterface::VALUE_LOW);
}
Чтобы заставить его работать, я должен написать команду вручную:
php /var/www/html/startup.php
Пока я не получаю ошибок.
WWW-данные пользователя Apache находятся в группе gpio, и для группы в файлах gpio установлены права доступа 7:
pi @ raspberrypi: ~ $ cd / sys / class / gpio
pi @ raspberrypi: / sys / class / gpio $ ls -l
всего 0
-rwxrwx — 1 root gpio 4096 16 марта 19:31 экспорт
lrwxrwxrwx 1 root gpio 0 16 марта 19:31 gpio2
lrwxrwxrwx 1 root gpio 0 13 марта 16:17 gpiochip0
lrwxrwxrwx 1 root gpio 0 13 марта 16:17 gpiochip100
lrwxrwxrwx 1 root gpio 0 13 марта 16:17 gpiochip128
-rwxrwx — 1 root gpio 4096 13 марта 16:17
pi @ raspberrypi: / sys / class / gpio $ groups www-data
www-data: www-data gpio
Задача ещё не решена.
Других решений пока нет …