从PHP脚本

时间:2015-05-18 12:40:14

标签: php exec

我正在尝试执行命令exec('vlc'); 来自php脚本(在linux中), 但是,页面(php)尚未加载。 即使使用pcntl_fork(用于exec命令),这也无效。

但如果我尝试从命令行php -S localhost:8000 -t path/to/src运行, 并在浏览器中输入localhost:8000/page.php,页面已加载并且vlc已打开。

有什么问题?

注意:  如果我尝试从命令行php -r "exec('vlc');"运行,则vlc会打开。

另外,我检查了php并没有在安全模式下工作。

UPDATE1:

<?php
echo shell_exec('vlc');
?>

**** 无法正常工作 ****

<?php
echo shell_exec('vlc 2>&1');
?>

输出:

主目录无法访问:权限被拒绝[08ea1490]脉冲音频输出错误:PulseAudio服务器连接失败:连接被拒绝[08e9e448]核心接口错误:没有合适的接口模块[08ded0d0]核心libvlc错误:接口“globalhotkeys,无“初始化失败[08e9e448] dbus接口错误:无法连接到D-Bus会话守护程序:无法自动启动dbus-daemon而没有$ DISPLAY for X11 [08e9e448]核心接口错误:没有合适的接口模块[08ded0d0]核心libvlc错误:接口“dbus,none”初始化失败[08ded0d0] core libvlc:使用默认接口运行vlc。使用'cvlc'来使用没有接口的vlc。 [08e9e448] qt4接口错误:无法连接到X服务器[08e9e448] skins2接口错误:无法初始化OSFactory [08e9e448] [cli] lua接口:侦听主机“* console”。 VLC媒体播放器2.2.0 Weatherwax

<?php
echo shell_exec('whoami');
?>

输出:www-data

/var/log/httpd  

不存在

/var/log/apache2/error.log存在并且:

Home directory not accessible: Permission denied
[0980c490] pulse audio output error: PulseAudio server connection failure: Connection refused
[09809448] core interface error: no suitable interface module
[097580d0] core libvlc error: interface "globalhotkeys,none" initialization failed
[09809448] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[09809448] core interface error: no suitable interface module
[097580d0] core libvlc error: interface "dbus,none" initialization failed
[097580d0] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[09809448] qt4 interface error: Could not connect to X server
[09809448] skins2 interface error: cannot initialize OSFactory
[09809448] [cli] lua interface: Listening on host "*console".
[09809448] [cli] lua interface: Requested shutdown.

UPDATE2:

shell_exec("DISPLAY=:0  vlc");

工作,但非常缓慢(使用php -S ...,更快)。

我正在尝试

 shell_exec("DISPLAY=:0  vlc v4l2:///dev/video0 --sout '.settings.'");

(有些设置)但我收到错误

[b4602c50] mux_ogg mux: Open
[b4604a30] v4l2 demux error: cannot open device '/dev/video0': Permission denied
[b4604a30] v4l2 demux error: cannot open device '/dev/video0': Permission denied
[b4604a30] v4l2 access error: cannot open device '/dev/video0': Permission denied
[b4b04ea0] core input error: open of `v4l2:///dev/video0' failed
[b4b04ea0] core input error: Your input can't be opened
[b4b04ea0] core input error: VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for details.
[b4602c50] mux_ogg mux: Close

但是php -S ...正在运作。

有什么问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉发表评论,这使得调试有点困难。首先检查/ var / log / httpd中的错误日志,看看是否有任何明显的错误。如果那里什么也没有,你能执行这个并告诉我们这是否有用吗?

<?php
echo shell_exec('vlc');
?>

如果这样做什么都不做

<?php
echo shell_exec('vlc 2>&1');
?>

<?php
echo shell_exec('whoami');
?>