Я написал небольшой скрипт PHP, который я хотел бы вызвать из Apache. Я собираюсь использовать это для управления пианобаром.
Если я выполняю скрипт напрямую из корневого терминала, он работает просто отлично, но если я пытаюсь запустить скрипт через веб-сервер, ничего не происходит.
Созданный вами fifo находится по адресу /home/dave/.config/pianobar/piano, и соответствующие строки в скрипте PHP выглядят так …
<?php
system("echo -n 'p' > /home/dave/.config/pianobar/piano"); //'p' pauses pianobar.
echo system('whoami');
?>
Если я выполняю этот скрипт в браузере через Apache, он отображает «www-data www-data», который говорит мне, что безопасный режим отключен и system()
команда работает, но пианобар продолжает играть. Если я запускаю это из корневого терминала, он возвращает «root» и паузы pianobar. Если я выполняю это из терминала под своим собственным именем пользователя, он возвращает «dave», и pianobar все равно останавливается.
The fifo, который я создал /home/dave/.config/pianobar/piano
было chmod
дед 777. Что дает? Это проблема с разрешениями как-то? Разве PHP не позволяет мне делать что-нибудь полезное с system()
команда?
Проверьте права доступа к папке:
stat --format '%a' /home/dave/.config/pianobar/piano
Установите разрешения для всех файлов внутри папки:
sudo chmod -R 755 /home/dave/.config/pianobar/piano
Попробуй, должно сработать.
Других решений пока нет …