安装ThinkPHP5.1并在框架中使用FFmpeg视频处理工具遇到的问题和解决办法

一:安装ThinkPHP5.1框架

问题一:

安装方法有很多,我这里使用composer安装的,但是遇到了问题,出现了报错

安装方法可是查看 https://www.kancloud.cn/manual/thinkphp5_1/353948

php 复制代码
composer create-project topthink/think blog 5.1.x

PHP Warning:  putenv() has been disabled for security...........

解决办法:

修改PHP配置文件,将 putenv() 函数移除disable_functions即可

修改之前:

修改之后:去掉putenv

问题二:

这个问题解决了,还是遇到了下一个问题

报错:

php 复制代码
The Process class relies on **proc_open**, which is not available on your PHP in ........

找到配置文件删除 proc_open

同理还有 exec,system

进行相同的删除之后保存,重启PHP服务,再执行安装命令即可。

二:FFmpeg

什么是FFmpeg?

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由MichaelNiedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。

引用:https://baike.baidu.com/item/ffmpeg/2665727

因公司项目需求需要对视频做处理,获取相关信息等,需要使用FFmpeg

首先需要在服务器中安装FFmpeg

centos7安装ffmpeg

powershell 复制代码
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

sudo yum install ffmpeg ffmpeg-devel -y

查看环境变量是否配置成功

powershell 复制代码
ffmpeg -version


在ThinkPHP5.1框架中使用该扩展

在项目中使用Composer快速安装PHP-FFMpeg

php 复制代码
composer require php-ffmpeg/php-ffmpeg

基本使用

注意:tp5需要全部添加斜杠,比如:

php 复制代码
$ffmpeg = \FFMpeg\FFMpeg::create();

问题一:

但是出现了如下报错

php 复制代码
Unable to load FFProbe

解决办法:进行程序运行目录的配置

使用 whereis ffmpeg 查看FFmpeg运行目录

php 复制代码
$FFMpeg = \FFMpeg\FFMpeg::create([
        'ffmpeg.binaries' => '/usr/bin/ffmpeg',	//FFmpeg的运行目录
        'ffprobe.binaries' => '/usr/bin/ffprobe'	//ffprobe的运行目录
]);

问题二:

报错:

php 复制代码
file_exists(): open_basedir restriction in effect. File(/usr/bin/ffprobe) is not within the allowed path(s)

解决办法:

参照:http://053086.com/106.html
方法一:

在网站设置里把'防跨站攻击'勾选去掉: 将网站目录设置为/www/wwwroot/网站文件目录/public 运行目录设置为/ 去掉防跨站攻击(open_basedir)的对勾。

然后到软件管理------找到所安装的PHP------设置------重启即可:

方法二:

is not within the allowed path(s) 意思是没权限访问那个文件夹

解决方法:

每个网站路径下面都有一个 .user.ini 文件.

里面的内容为

objectivec 复制代码
open_basedir=/www/wwwroot/xxx.com/:/tmp/:/proc/

这个代表本网站可以访问的路径

如果需要添加其他路径.可以直接在后面添加即可,每个路径之间用:隔开

添加以后 重启下Nginx即可生效. 其他环境应该也都一样.

到此已经完成有关工作

但是:

在 TP 以前的版本都会提供些 系统常量 用于快捷操作

比如 上传图片需要的公共目录路径 但是 TP5.1 砍掉了这些

所以导致直接使用 ROOT_PATH 失效,FFmpeg save frame 失败

解决方法:

5.1版本取消了所有的系统常量,原来的系统路径变量改为使用Env类获取(需要引入think\facade\Env

php 复制代码
 "app_path=========".Env::get('app_path')."</br>";
 "root_path=========".Env::get('root_path')."</br>";
 "think_path=========".Env::get('think_path')."</br>";
 "config_path=========".Env::get('config_path')."</br>";
 "extend_path=========".Env::get('extend_path')."</br>";
 "vendor_path=========".Env::get('vendor_path')."</br>";
 "runtime_path=========".Env::get('runtime_path')."</br>";
 "route_path=========".Env::get('route_path')."</br>";
 "module_path=========".Env::get('module_path')."</br>";

所有问题都解决了!!!

相关推荐
网安_秋刀鱼4 小时前
PHP代码审计 - SQL注入
sql·web安全·网络安全·php·1024程序员节
B20080116刘实4 小时前
CTF攻防世界小白刷题自学笔记13
开发语言·笔记·web安全·网络安全·php
数据小小爬虫10 小时前
如何用Java爬虫“偷窥”淘宝商品类目API的返回值
java·爬虫·php
汤米粥12 小时前
小皮PHP连接数据库提示could not find driver
开发语言·php
fakaifa14 小时前
CRMEB Pro版v3.1源码全开源+PC端+Uniapp前端+搭建教程
前端·小程序·uni-app·php·源码下载
万岳软件开发小城17 小时前
外卖跑腿APP开发实战:如何基于同城O2O系统源码搭建平台
php·app开发·同城o2o系统源码·同城外卖跑腿系统源码·外卖平台开发·外卖app
MonkeyKing_sunyuhua19 小时前
FFmpeg将mp4的文件转化为m4a
ffmpeg
数勋API19 小时前
银行卡归属地查询API接口如何用PHP调用
开发语言·云计算·php
多客软件佳佳19 小时前
校园交友系统的设计与实现(开源版+三端交付+搭建+售后)
小程序·前端框架·uni-app·开源·php·交友
网络安全-海哥20 小时前
【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
开发语言·javascript·安全·ecmascript·php·网安入门