我已经在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"
答案 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 ');