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.
我想通过 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.