На локальном сервере Linux (Rapsberry Pi debian stretch с рабочим столом) я работаю над отправкой команд "audtool" на работающий медиаплеер Audacious с использованием сценариев php, exec и bash.Audacious запускается автоматически, когда сервер запускается с пользователем «pi».У меня есть apache2 и php, настроенные и работающие на сервере, и я могу подключиться к серверу по ssh и выполнить все команды из cli.Я считаю, что я решил проблемы с запуском audtool (dbus и установкой правильных переменных окружения), и запуск php в командной строке работает успешно.Однако при запуске php на веб-странице я получаю длинную строку информации о apache2
. Я потратил несколько часов (в течение целого дня), исследуя это в Интернете, чтобы добраться до этой стадии,так близко, что я почти могу коснуться его, но застрял на этом последнем элементе.Примером является отображение текущей песни из запущенного экземпляра Audacious.Audtool требует работающий dbus (ищет дисплей).Используя exec или shell_exec у меня нет проблем с запуском команд bash, таких как whoami или ls.
Страница php (cursong.php):
<?php
echo exec('/var/www/html/cursong.sh');
?>
Скрипт bash (cursong.sh):
#!/bin/bash
##call current song
pid=`pidof audacious`
user=`ps -p $pid -o user=`
export `strings /proc/$pid/environ | grep DBUS_SESSION_BUS_ADDRESS`
sudo -E -su $user /usr/bin/audtool --current-song
(отсюда: https://redmine.audacious -media-player.org /boards / 1 / themes / 1058? R = 1059 )
Вывод командыстрока: php -f cursong.php
Artist - Song Title (for example - so this works)
Вывод на веб-страницу:
declare -x APACHE_LOCK_DIR="/var/lock/apache2" declare -x
APACHE_LOG_DIR="/var/log/apache2" declare -x
APACHE_PID_FILE="/var/run/apache2/apache2.pid" declare -x
APACHE_RUN_DIR="/var/run/apache2" declare -x APACHE_RUN_GROUP="www-
data" declare -x APACHE_RUN_USER="www-data" declare -x
INVOCATION_ID="4ce76136ca8842bd9108d6b1b9a5b9ed" declare -x
JOURNAL_STREAM="8:23896" declare -x LANG="C" declare -x OLDPWD
declare -x
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/var/www/html" declare -x SHLVL="1"
Я установил www-data, пользователя apache2 со следующим в / etc / sudoers:
www-data ALL=NOPASSWD: ALL
и / var / www / html - это rwx для всех
Очевидно, я ожидаю увидеть «Artist - Название песни» на веб-странице, но вместо этого я получаю обратно все apache2Информация.Что я пропустил, или где я ошибся?