laravel 在 tinker 调试成功 但是在代码里运行报错
1). 当前使用的 Laravel 版本?
laravel 8.0
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
7.4.14
3). 当前系统
centos 7.4
2. 问题描述?
最近使用了 php-ffmpeg,在 AppServiceProvider 里写了
public function register()
{
$this->app->singleton('ffmpeg',function (){
$config = [
'ffmpeg.binaries' => '/usr/local/ffmpeg/ffmpeg/bin/ffmpeg',
'ffprobe.binaries' => '/usr/local/ffmpeg/ffmpeg/bin/ffprobe'
];
return FFMpeg::create($config);
});
$this->app->singleton('ffprobe',function (){
$config = [
'ffprobe.binaries' => '/usr/local/ffmpeg/ffmpeg/bin/ffprobe'
];
return FFProbe::create($config); //这里是第32行
});
}
然后在 php artisan tinker 里面 是可以拿到想要的结果
Psy Shell v0.10.9 (PHP 7.4.16 — cli) by Justin Hileman
>>> app('ffprobe')->format('/data/wwwroot/default/nongfu/storage/app/public/Video/2021/11-25/_21112510053528446.mp4')->get('duration');
=> "30.059000"
之前是可以运行的,但因为 linux 环境缺ffmpeg 的库 就重装了一下,这种错误 有什么解决思路么?或者是怎么确定哪里发生问题了呢?
4. 您实际得到的结果?
在接口调用的时候
"message": "Unable to load FFProbe",
"exception": "FFMpeg\\Exception\\ExecutableNotFoundException",
"file": "/data/wwwroot/default/nongfu/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Driver/FFProbeDriver.php",
"line": 50,
"trace": [
{
"file": "/data/wwwroot/default/nongfu/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe.php",
"line": 226,
"function": "create",
"class": "FFMpeg\\Driver\\FFProbeDriver",
"type": "::"
},
{
"file": "/data/wwwroot/default/nongfu/app/Providers/AppServiceProvider.php",
"line": 32,
"function": "create",
"class": "FFMpeg\\FFProbe",
"type": "::"
},
命令行里用的是 php-cli , 网站用的是 php-fpm ,本来就是不一样的环境,有不一样的结果很正常。
在代码里使用 exec 调试下更实在一点: