PHP exec mocp命令

时间:2015-07-26 20:33:14

标签: php linux apache2 raspbian

我想在我的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:服务器已退出!

2 个答案:

答案 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。