#apache #cgi #server-side #wav
#apache #cgi #на стороне сервера #wav
Вопрос:
Как я могу запустить команду из CGI-скрипта (bash) для воспроизведения звука wav на стороне сервера?
Комментарии:
1. Я хочу, чтобы звук воспроизводился из динамика, подключенного к веб-серверу.
Ответ №1:
Вы можете запустить аудиоплеер командной строки, как описано в nak, но это может не сработать из-за разрешений пользователя, использующего Apache. По умолчанию Apache запускается как www-data:www-data (или apache: apache или www: www в некоторых дистрибутивах). В качестве быстрого исправления / теста вы можете настроить Apache на запуск от имени пользователя, имеющего права доступа к аудиоустройству на компьютере, изменив ваш файл /etc/apache2/apache2.conf (или /etc/httpd/httpd.conf»), чтобы иметь:
User USER_THAT_CAN_PLAY_AUDIO
Group USER_THAT_CAN_PLAY_AUDIO
Предупреждение: это небезопасно и не предназначено для постоянного решения!
Ответ №2:
Вот как я бы это сделал
#!/bin/sh
echo Content-type: text/plain
echo ""
echo "Server is playing sine.wav!"
aplay -q sine.wav
Комментарии:
1. Я собираюсь попробовать это, но я попробовал использовать mplayer подобным образом, и он выдал мне ошибку типа «не удалось открыть динамики».
2. Что ж, если это не сработает, тогда может возникнуть другая проблема, которую необходимо решить в первую очередь.
3. оказывается, он не будет воспроизводить звук даже локально.
Ответ №3:
Я наткнулся на этот старый вопрос, пытаясь решить ту же проблему: чтобы мой личный веб-сервер Apache предупреждал меня, когда кто-то делает конкретный запрос (в моем случае вызов чата без необходимости запуска IM).
Приведенное ниже решение — это то, что я использую в Slackware 14.1: в соответствии с вашим дистрибутивом YMMV.
-
запуск
visudo
-
добавьте строку
TheUserRunningApache ALL=(ALL) NOPASSWD: /usr/bin/play
(userrunningapache — это имя пользователя, используемое вашим Apache) -
На странице PHP, на которой вы хотите воспроизвести звук, добавьте эту строку:
system ("sudo /usr/bin/play SOUND.WAV");
Если вы не хотите предоставлять Apache доступ к /usr/bin
папке, даже если он ограничен play
, вы можете скопировать sox
исполняемый файл (программу, которая использовалась для запуска /usr/bin/play
) в другое место, но вам придется соответствующим образом изменить последние две инструкции выше.