为什么exec('哪个ffmpeg')在我的应用程序中什么也没有返回?

时间:2015-04-28 16:40:26

标签: php terminal ffmpeg exec

我正在尝试为我的应用程序处理FFMpeg,但是我在设置它时遇到了一些困难。要实例化或创建FFMpeg的实例,我需要调用create()方法并通过FFMpeg和FFProbe的操作位置。为此,我希望能够写下:

        $ffmpeg = FFMpeg\FFMpeg::create([
                'ffmpeg.binaries' => exec('which ffmpeg'),
                'ffprobe.binaries' => exec('which ffprobe')
        ]);

但遗憾的是,命令exec('which ffmpeg')返回一个空字符串。如果我在终端中运行'which ffmpeg'命令,我会收到回复:

/usr/local/bin/ffmpeg

那么为什么它在我的终端中工作,而不是在我的PHP脚本试图执行它时呢?

我尝试了一些解决方案,例如在命令末尾添加2>&1,这对shell_exec()中运行命令没有帮助,并将输出放在第二个参数中exec()这也没有解决我的问题。

我觉得这可能是某种奇怪的权限问题......

附录

我注意到PHP无法看到我的$PATH变量。从控制台,echo $PATH生成:

/Applications/MAMP/bin/php/php5.6.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:‌​/sbin:/opt/X11/bin:/usr/local/git/bin:/opt/ImageMagick/bin

虽然我的应用程序使用exec()调用相同内容会产生:

/usr/bin:/bin:/usr/sbin:/sbin237.671000 

0 个答案:

没有答案