我已安装FFMPEG,但无法在PHP脚本中找到它

时间:2019-11-12 16:55:14

标签: php linux ffmpeg centos ffmpeg-php

我已经在CentOS中安装了FFMPeg。它运作完美。 它在/ usr / bin目录中。另外,我有Plesk 18.0.20随附的PHP 7.2.24。

我想在PHP脚本中使用FFMPeg,但是该脚本找不到FFMpeg的可执行文件。我曾尝试给出确切的路由(/ usr / bin / ffmpeg),但不起作用。

这是生产服务器。在我的开发服务器(macOS)中,相同的脚本可以正常工作。

我尝试使用:

var_dump(getenv('PATH'));
var_dump(exec('which ffmpeg'));
var_dump(ini_get('open_basedir'));
var_dump(is_file(exec('which ffmpeg')));
var_dump(is_executable(exec('which ffmpeg')));

它返回我:

string(49) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
string(0) ""
string(44) "/var/www/vhosts/name-of-the-domain.com/:/tmp/"
bool(false)
bool(false)
NULL

¿可能发生什么事?

我注意到的一个非常奇怪的事情是我无法通过php访问任何命令: 我尝试将其与echo一起使用

var_dump(exec('which echo'));
var_dump(is_file(exec('which echo')));
var_dump(is_executable(exec('which echo')));

它返回我:

string(0) ""
bool(false)
bool(false)
NULL

权限正确:

[root@vps bin]# ls -lha echo
-rwxr-xr-x 1 root root 33K ago 20 08:25 echo

[root@vps bin]# ls -lha ffmpeg
-rwxr-xr-x 1 root root 217K abr  4  2019 ffmpeg

但是如果我做一个

var_dump(exec('echo "HELLO"'))

它返回了我

string(5) "HELLO"

2 个答案:

答案 0 :(得分:0)

检查服务器上是否安装了PHP扩展Suhosin(使用phpinfo)或Security enhanced Linux(使用sestatus)。

Suhosin具有将功能列入黑名单的功能,并且SELinux可能由于文件上下文不匹配而禁止执行。

答案 1 :(得分:-1)

我认为将FFMPFG与php一起使用,最快的方法是使用PHP-FFMPEG包。 https://github.com/PHP-FFMpeg/PHP-FFMpeg 我认为这个问题似乎与执行权限有关。

您可以尝试对其进行测试以检查是否已加载FFMPEG吗?也许PHP扩展名可能未加载到您的服务器上。

尝试添加此代码以测试ffmpeg是否已加载

<?php if (! extension_loaded (ffmpeg)) exit ('ffmpeg was not loaded ');