1. 1
  2. 1
  3. 1
  4. 1
  • 欢迎您
    php使用ffmpeg走过的坑
    sxy 2022-07-14 技术语录

    131

    PHP使用ffmpeg

    1、ffmpeg视频编码出现Unknown encoder 'libx264'问题


    下载freetype链接:https://download.savannah.gnu.org/releases/freetype/

    fontconfig链接:https://www.freedesktop.org/wiki/Software/fontconfig/

    问题:

    image.png

    解决:

    make CFLAGS=-std=c99


    问题:

    image.png

    解决:

    在配置的时候添加CFLAGS="-O3 -fPIC" ,如下命令:

    CFLAGS="-O3 -fPIC" ./configure   --enable-shared  --prefix=/usr/

    image.png

    *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

    image.png

    安装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算法
    sxy 2022-06-23 技术语录

    99

    国密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 '参数错误';
    }


  • 欢迎您
    阿里云一键登录&获取手机号
    sxy 2022-06-23 技术语录

    112

    阿里云一键登录代码&获取手机号:

    <?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&SCVN操作总结
    sxy 2022-06-22 技术语录

    107

    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 调出合并工具,这个是出现冲突使用

    image.png

    13、git reset --hard FETCH_HEAD 没有后面的hard,不会冲掉本地工作区。只会冲掉stage区


    SVN操作:

    基本相同

  • 欢迎您
    IP、域名、DNS、host概念
    转载 2021-10-27 技术语录

    278

    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报错的问题
    sxy 2021-06-16 技术语录

    411

    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));

    ECSHOP完美解决Deprecated: preg_replace()报错的问题

    2)、解决办法:

    代码:

    return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

    修改为:

    return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);


  • 欢迎您
    phpstorm使用
    张楚岚 2021-02-26 技术语录

    446

    最近使用了PHPstorm编辑器,所以在这里总结一下:

    一、编辑器汉化:

    1、点击File

    image.png

    2、点击setting,打开设置

    image.png

    3、搜索框搜索chinese关键字,查找中文汉化插件

    image.png

    4、安装完成后重启phpstorm

    image.png

    5、提示restart重启点击

    image.png

    6、成功

    image.png

  • 欢迎您
    花生壳代理(PHP)无法获取用户ip
    转载 2021-02-01 技术语录

    475

    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










  • 姓名:孙小宇
  • 职业:PHP开发
  • 邮箱:yntx420@163.com
  • 定位:河北 · 张家口
       
  •   总访问量:17.18w+
  •   累计访问量:14.45w+
  •   
System Error

[2] ErrorException in Session.php line 106

session_start(): Cannot send session cookie - headers already sent by (output started at /www/wwwroot/sxy/application/common.php:778)

  1. // 读取session驱动
  2. $class = false !== strpos($config['type'], '\\') ? $config['type'] : '\\think\\session\\driver\\' . ucwords($config['type']);
  3. // 检查驱动类
  4. if (!class_exists($class) || !session_set_save_handler(new $class($config))) {
  5. throw new ClassNotFoundException('error session handler:' . $class, $class);
  6. }
  7. }
  8. if ($isDoStart) {
  9. session_start();
  10. self::$init = true;
  11. } else {
  12. self::$init = false;
  13. }
  14. }
  15. /**
  16. * session自动启动或者初始化
  17. * @return void

Call Stack

  1. in Session.php line 106
  2. at Error::appError(2, 'session_start(): Can...', '/www/wwwroot/sxy/thi...', 106, ['config' => ['id' => '', 'var_session_id' => '', 'prefix' => 'think', ...], 'isDoStart' => true])
  3. at session_start() in Session.php line 106
  4. at Session::init() in Session.php line 120
  5. at Session::boot() in Session.php line 164
  6. at Session::get('uid', null) in helper.php line 304
  7. at session('uid') in Base.php line 23
  8. at Base->_initialize() in Controller.php line 59
  9. at Controller->__construct(object(Request))
  10. at ReflectionClass->newInstanceArgs([object(Request)]) in App.php line 359
  11. at App::invokeClass('app\index\controller...') in Loader.php line 479
  12. at Loader::controller('index', 'controller', false, 'Error') in App.php line 581
  13. at App::module(['', null, null], ['app_host' => '', 'app_debug' => true, 'app_trace' => false, ...], null) in App.php line 457
  14. at App::exec(['type' => 'module', 'module' => ['', null, null]], ['app_host' => '', 'app_debug' => true, 'app_trace' => false, ...]) in App.php line 139
  15. at App::run() in start.php line 19
  16. at require('/www/wwwroot/sxy/thi...') in index.php line 22

Environment Variables

GET Data
empty
POST Data
empty
Files
empty
Cookies
empty
Session
empty

Server/Request Data

USER
www
HOME
/home/www
FCGI_ROLE
RESPONDER
HTTPS
on
SSL_TLS_SNI
sxy.xyxqk.cn
proxy-nokeepalive
1
HTTP_USER_AGENT
CCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE
en-US,en;q=0.5
HTTP_ACCEPT_ENCODING
br,gzip
HTTP_HOST
sxy.xyxqk.cn
HTTP_CONNECTION
Keep-Alive
PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
LD_LIBRARY_PATH
/www/server/apache/lib
SERVER_SIGNATURE
<address>Apache Server at sxy.xyxqk.cn Port 443</address>
SERVER_SOFTWARE
Apache
SERVER_NAME
sxy.xyxqk.cn
SERVER_ADDR
172.17.111.241
SERVER_PORT
443
REMOTE_ADDR
3.236.121.117
DOCUMENT_ROOT
/www/wwwroot/sxy/public
REQUEST_SCHEME
https
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT
/www/wwwroot/sxy/public
SERVER_ADMIN
webmaster@example.com
SCRIPT_FILENAME
/www/wwwroot/sxy/public/index.php
REMOTE_PORT
47030
GATEWAY_INTERFACE
CGI/1.1
SERVER_PROTOCOL
HTTP/1.1
REQUEST_METHOD
GET
QUERY_STRING
REQUEST_URI
/
SCRIPT_NAME
/index.php
PHP_SELF
/index.php
REQUEST_TIME_FLOAT
1670107119.6936
REQUEST_TIME
1670107119
Environment Variables
empty

ThinkPHP Constants

APP_PATH
/www/wwwroot/sxy/public/../application/
PUB_PATH
/www/wwwroot/sxy/public/admin/static/
UPLOADS_PATH
/www/wwwroot/sxy/public/uploads/
THINK_VERSION
5.0.20
THINK_START_TIME
1670107119.694
THINK_START_MEM
263456
EXT
.php
DS
/
THINK_PATH
/www/wwwroot/sxy/thinkphp/
LIB_PATH
/www/wwwroot/sxy/thinkphp/library/
CORE_PATH
/www/wwwroot/sxy/thinkphp/library/think/
TRAIT_PATH
/www/wwwroot/sxy/thinkphp/library/traits/
ROOT_PATH
/www/wwwroot/sxy/
EXTEND_PATH
/www/wwwroot/sxy/extend/
VENDOR_PATH
/www/wwwroot/sxy/vendor/
RUNTIME_PATH
/www/wwwroot/sxy/runtime/
LOG_PATH
/www/wwwroot/sxy/runtime/log/
CACHE_PATH
/www/wwwroot/sxy/runtime/cache/
TEMP_PATH
/www/wwwroot/sxy/runtime/temp/
CONF_PATH
/www/wwwroot/sxy/public/../application/
CONF_EXT
.php
ENV_PREFIX
PHP_
IS_CLI
false
IS_WIN
false