Php 为什么exec(';which ffmpeg';)在我的应用程序中不返回任何内容?

Php 为什么exec(';which ffmpeg';)在我的应用程序中不返回任何内容?,php,terminal,ffmpeg,exec,Php,Terminal,Ffmpeg,Exec,我试图为我的应用程序处理FFMpeg,但在设置它时遇到了一些困难。要实例化或创建FFMpeg的实例,我需要调用create()方法并传递FFMpeg和FFProbe的操作位置。为此,我希望能够写: $ffmpeg = FFMpeg\FFMpeg::create([ 'ffmpeg.binaries' => exec('which ffmpeg'), 'ffprobe.binaries' => 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
/usr/bin:/bin:/usr/sbin:/sbin237.671000 
使用
exec()
从我的应用程序调用该函数时,会产生:

/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
/usr/bin:/bin:/usr/sbin:/sbin237.671000 

php是否对
/usr/local/bin/ffmpeg
具有
读取/执行
权限?不太可能。如何查找?
ls-al/usr/local/bin/ffmpeg
-您可以使用以下命令设置
read/execute
(rwxr-xr-x)权限:
chmod 755/usr/local/bin/ffmpeg
,检查此图像:您的系统搜索路径在PHP中可能不可用。在控制台上尝试
echo$PATH
,并在控制台中的
exec()
@halfer
echo$PATH
中生成:
/Applications/MAMP/bin/php/php5.6.2/bin:/usr/local/bin:/usr/bin:/usr/sbin:/opt/X11/bin:/usr/local/git/bin:/opt/ImageMagick/bin
,而我的应用程序中的
echo$PATH
会生成
/usr/bin:/bin:/usr/sbin:/sbin237.671000