PHP使用ffmpeg
1、ffmpeg视频编码出现Unknown encoder 'libx264'问题
下载freetype链接:https://download.savannah.gnu.org/releases/freetype/
fontconfig链接:https://www.freedesktop.org/wiki/Software/fontconfig/
问题:
解决:
make CFLAGS=-std=c99
问题:
解决:
*make的时候要make clean
我们使用drawtext命令行可能出现“No such filter: 'drawtext” 错误,这个说明我们没有这滤镜,这时要重新编译并加上一些参数。
//生成静态库
./configure --enable-libfreetype --enable-libfontconfig --enable-libfribidi --disable-yasm --prefix=/usr/local/
//生成动态库
./configure --enable-libfreetype --enable-libfontconfig --enable-libfribidi --enable-shared --enable-pic --prefix=/usr/local/
--enable-libfreetype 启用libfreetype
问题:Unknown encoder 'libx264'
解决:
需要重新编译安装ffmpeg
1. 配置ffmpeg时,加上x264,如:
./configure --enable-gpl --enable-libx264
2. make clean
3. make
4. make install
问题:
nasm/yasm not found or too old. Use –disable-x86asm for a crippled build.
解决:
1.在http://www.tortall.net/projects/yasm/releases/上下载适合自己的版本
2.解压并进入yasm的目录
3.执行./configure
4.执行make
5.执行sudo make install
问题:编译ffmpeg的时候出现ERROR: libx264 not found
x264源码下载地址:https://www.videolan.org/developers/x264.html
安装nasm
2.14版本的下载地址:
http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
编辑 vim /etc/profile
export PATH=$PATH:/usr/local/nasm/bin
source /etc/profile
警告:WARNING: using libx264 without pkg-config
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //(此路径为.pc文件所在路径),可使用
下载gettext:http://ftp.gnu.org/gnu/gettext/
每次重新编译完,meke的时候,要make clean!
PHP执行exec(ffmpeg) 命令返回127
解决:
第一步:vim /etc/ld.so.conf.d/ffmpeg.conf
第二步:添加/usr/local/ffmpeg/lib
第三步:ldconfig
国密sm3算法代码:
//计算sm3 public function _sm3($arr) { require dirname(__DIR__).'/lib/sm3/vendor/autoload.php'; $str = $this->ascll($arr); return strtoupper(sm3($str)); } //自定义ascll排序 public function ascll($params = array()) { if(!empty($params)){ $p = ksort($params); if($p){ $str = ''; foreach ($params as $k=>$val){ $str .= $k .'=' . $val . '&'; } $strs = rtrim($str, '&'); $strs .= '&7B40A8B1C602F1DB9C6D2E5E793A42196344EC7DAA55463C0EAEC8DAEEF9A9BD'; return $strs; } } return '参数错误'; }
阿里云一键登录代码&获取手机号:
<?php /** * @Note 阿里云一键登录&获取手机号 * @Time 2022-05-11 */ use AlibabaCloud\SDK\Dypnsapi\V20170525\Dypnsapi; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\SDK\Dypnsapi\V20170525\Models\GetMobileRequest; use AlibabaCloud\SDK\Dypnsapi\V20170525\Models\VerifyMobileRequest; class SampleController extends BaseController { protected $accessKeyId = 'accessKeyId '; protected $accessKeySecret = 'accessKeySecret '; /** * 使用AK&SK初始化账号Client * @param string $accessKeyId * @param string $accessKeySecret * @return Dypnsapi */ public function createClient(){ $config = new Config([]); $config->accessKeyId = $this->accessKeyId; $config->accessKeySecret = $this->accessKeySecret; // 访问的域名 $config->endpoint = "dypnsapi.aliyuncs.com"; return new Dypnsapi($config); } //一键登录取号 public function aliyunloginAction() { require dirname(__DIR__).'/lib/alyauth/vendor/autoload.php'; $client = self::createClient(); $request = new GetMobileRequest([]); $accessToken = Arr::get($_REQUEST,'accessToken',''); if($accessToken==''){ return Response::apiJsonError(0,'参数错误'); } $args = array( 'token'=>$accessToken, ); $request->accessToken = @$args['token']; $response = $client->getMobile($request); exit(json_encode($response->body)); } //本机号码校验认证 public function verifyPhoneAction() { require dirname(__DIR__).'/lib/alyauth/vendor/autoload.php'; $client = self::createClient(); $accessCode = Arr::get($_REQUEST,'accessToken',''); $phoneNumber = Arr::get($_REQUEST,'phoneNumber',''); if($accessCode=='' || $phoneNumber==''){ return Response::apiJsonError(0,'参数错误'); } $outId = 'NJLIVE'.time().mt_rand(10000,99999); $verifyMobileRequest = new VerifyMobileRequest([ 'accessCode'=>$accessCode, "phoneNumber" => $phoneNumber, "outId" => $outId, ]); // 复制代码运行请自行打印 API 的返回值 $response = $client->verifyMobile($verifyMobileRequest); exit(json_encode($response->body)); } }
GIT操作手册:
0、git init - 初始化仓库
1、git status 查看状态
2、git diff 查看修改内容
3、git add 添加文件到暂存区
4、git commit -m '' 将暂存区内容添加到仓库中
5、git reset 回退版本
6、git rm 将文件从暂存区和工作区中删除
7、git mv 移动或重命名工作区文件
8、git remote 远程仓库操作
9、git fetch 从远程获取代码库
10、git pull 下载远程代码并合并
11、git push 上传远程代码并合并
12、git mergetool 调出合并工具,这个是出现冲突使用
13、git reset --hard FETCH_HEAD 没有后面的hard,不会冲掉本地工作区。只会冲掉stage区
SVN操作:
基本相同
IP、域名、DNS、host概念
IP,是给每个连接在互联网上的主机分配的一个32位地址,理论上有2^32个
域名,由于IP地址基于数字,不方便记忆,于是便用域名来代替IP地址,域名是一个IP地址的“面具”
DNS,用于记录IP地址和域名之间映射关系的服务
host,本地的域名IP映射
客户端输入域名,向服务器发出请求,首先会到DNS系统进行域名解析,DNS会返回对应的IP地址给客户端,客户端再用此IP地址向服务器发出请求。
浏览器一般都有DNS缓存,访问过一次的域名会将其IP地址缓存到浏览器中,方便下次访问。
如果在host中配了域名到ip的映射,就不会走DNS,而是直接走host。本地优先级最高。
————————————————
原文链接:https://blog.csdn.net/u014158869/article/details/87742681
ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法
解决办法:
打开cls_template.php文件中发现下面这段代码:
$tag_sel = array_shift(explode(' ', $tag));
修改为
$tagArr = explode(' ', $tag); $tag_sel = array_shift($tagArr);
这样之后顶部的报错没掉了,左侧和底部的报错还需要去ecshop的后台点击清除缓存才能去除。
下面我们遇到这段代码,在php5.3以上版本,也会报错误。
$file_suffix = strtolower(array_pop(explode('.', $file_name)));
修改方法:
$fnarray=explode('.', $file_name); $file_suffix = strtolower(array_pop($fnarray));
2)、解决办法:
代码:
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
修改为:
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
最近使用了PHPstorm编辑器,所以在这里总结一下:
一、编辑器汉化:
1、点击File
2、点击setting,打开设置
3、搜索框搜索chinese关键字,查找中文汉化插件
4、安装完成后重启phpstorm
5、提示restart重启点击
6、成功
1、问题描述
因为需要,所以用花生壳搭建了一个网站,但是获取到的都是本机地址(其它电脑访问网站得到的也是127.0.0.1),
很正常,毕竟不是云主机。但让人气愤的是花生壳官方没有给出解决方案,无语。
<?php echo $_SERVER["REMOTE_ADDR"];?>
//输出127.0.0.1
2、解决办法
1)通过搜狐获取用户ip
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript"> alert(returnCitySN["cip"]); </script>
网站返回的是json格式的数据,如下
2)再用ajax传递给后端(我这里是拍php)
前端这样子
<script> $.ajax({url: "php路径",type: "post",data: {ip: returnCitySN["cip"]},success: function(){alert("终于可行了!");}}); </script>
后端这样子
$ip = $_POST['ip'];//留着$_SERVER吧,万一有用呢 $ip = isset($ip) ? $ip : $_SERVER["REMOTE_ADDR;"]; 转载链接:https://blog.csdn.net/qq_45492912/article/details/106910635
2134°
1804°
1268°
949°
908°
905°
885°
852°