我想在我的Raspberry Pi上使用Mocp(控制台上的音乐)通过PHP播放音乐。这个命令
mocp -S
在控制台中运行得很好(它启动了mocp的服务器)但是在PHP的exec函数中它不起作用:
<?php
$ret = exec("mocp -S", $out, $err);
print_r($ret);
print_r($out);
print_r($err);
?>
它只会返回:
Array ( ) 2
根据this list return_var代码2表示
滥用shell内置(根据Bash文档)
但究竟是什么意思呢?命令mocp --help
适用于控制台和PHP exec。
如何在PHP中使用每个参数运行mocp?
编辑:
我刚登录为&#34; www-data&#34; (apache用户)并尝试运行mocp命令。我得到了这个回报:
FATAL_ERROR:无法创建目录
/var/www/.moc
我将Pi的.moc
文件夹复制到www-data
(用户&#34; pi&#34;):
sudo cp /home/pi/.moc/ /var/www/.moc
现在我上面的剧本给了我:
运行服务器...数组([0] =&gt;运行服务器... [1] =&gt;运行服务器...)2
但它仍然无效。在www-data mocp -S
的控制台中现在给我
FATAL_ERROR:无法绑定()到套接字
编辑2:
我更改了/var/www/.moc
上的permsions。如果我尝试mocp -S
,我会得到这个
运行服务器...
试着JACK ......
尝试ALSA ...
ALSA lib confmisc.c:768:(parse_card)找不到卡&#39; 0&#39;
ALSA lib conf.c:4241:(_ snd_config_evaluate)函数snd_func_card_driver返回错误:Datei oder Verzeichnis nicht gefunden
ALSA lib confmisc.c:392:(snd_func_concat)错误评估字符串
ALSA lib conf.c:4241:(_ snd_config_evaluate)函数snd_func_concat返回错误:Datei oder Verzeichnis nicht gefunden
ALSA lib confmisc.c:1251:(snd_func_refer)错误评估名称
ALSA lib conf.c:4241:(_ snd_config_evaluate)函数snd_func_refer返回错误:Datei oder Verzeichnis nicht gefunden
ALSA lib conf.c:4720:(snd_config_expand)评估错误:Datei oder Verzeichnis nicht gefunden
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)未知PCM默认
尝试OSS ...
FATAL_ERROR:没有有效的声音驱动程序!
FATAL_ERROR:服务器已退出!
答案 0 :(得分:2)
似乎www-data用户没有权限使用您的音频设备。 我相信执行这个应该有所帮助:
sudo usermod -a -G audio www-data
答案 1 :(得分:1)
我对问题的完整解决方案:
我开始使用新的raspbian安装并运行这些命令:
sudo raspi-config
->Expand Filesystem
->Finish, reboot
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 php5 libapache2-mod-php5
sudo groupadd www-data
sudo usermod -g www-data www-data
sudo apt-get install moc
sudo usermod -a -G audio www-data
mocp -S
sudo cp -R /home/pi/.moc /var/www/.moc
sudo chown www-data /var/www/.moc/
sudo chmod -R a+rwxst .moc/
最后,用户“www-data”能够运行mocp。