我正在尝试为我的应用程序处理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