PHP 执行 mocp 命令

PHP exec mocp command

我想通过 PHP 在我的 Raspberry Pi 上使用 Mocp 播放音乐(控制台上的音乐)。这个命令

mocp -S

在控制台中工作得很好(它启动 mocp 服务器)但在 PHP 的 exec 函数中它不起作用:

<?php
    $ret = exec("mocp -S", $out, $err);
    print_r($ret);
    print_r($out);
    print_r($err);
?>

只是 returns:

Array ( ) 2

根据 this list return_var 代码 2 表示

Misuse of shell builtins (according to Bash documentation)

但这到底是什么意思呢?命令 mocp --help 在控制台和 PHP exec 中都有效。 我如何 运行 对 PHP 中的每个参数进行 mocp?

编辑:
我刚刚以 "www-data"(apache 用户)身份登录并尝试 运行 mocp 命令。我得到这个 return:

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] => Running the server... [1] => Running the server... ) 2

但是还是不行。在 www-data 的控制台中 mocp -S 现在给我

FATAL_ERROR: Can't bind() to the socket

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

Running the server...
Trying JACK...
Trying 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 returned error: Datei oder Verzeichnis nicht gefunden
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: Datei oder Verzeichnis nicht gefunden
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: Datei oder Verzeichnis nicht gefunden
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: Datei oder Verzeichnis nicht gefunden
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
Trying OSS...
FATAL_ERROR: No valid sound driver!
FATAL_ERROR: Server exited!

似乎 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.