PHP exec mocp command


PHP exec mocp command

我想在我的树莓派上用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

根据这个列表,return_var代码2表示

滥用shell内置(根据Bash文档)

但是这到底是什么意思呢?命令mocp --help在控制台和PHP执行中都可以工作。我如何运行mocp与每一个参数在PHP?

编辑:
我刚刚登录为"www-data"(apache用户),并试图运行mocp命令。我得到这样的返回:

FATAL_ERROR: Can't create directory /var/www/.moc

我将Pi的.moc文件夹复制到www-data(用户为"Pi"):

sudo cp /home/pi/.moc/ /var/www/.moc

现在我的脚本从上面给我:

Running the server…Array([0] =>正在运行的服务器…[1] =>服务器正在运行…)2

但它仍然不起作用。在www-data的控制台中,mocp -S现在给我

FATAL_ERROR: Can't bind() to socket

编辑2:
我更改了/var/www/.moc的权限。如果我尝试mocp -S,我得到这个

运行服务器…
在杰克…
尝试ALSA…
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function 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) function snd_func_concat返回错误:Datei oder Verzeichnis nicht gefunden
ALSA lib confmisc.c:1251:(snd_func_reference)错误求值name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_reference返回错误: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) Unknown PCM default
在OSS…
没有有效的声音驱动程序!
FATAL_ERROR:服务器已退出!

似乎www-data用户没有正确的访问权限来使用您的音频设备。我相信执行这个应该会有帮助:

sudo usermod -a -G audio www-data

我对这个问题的完整解决方案:
我从一个新的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.