月度归档: 2016 年 10 月

  • PHP bcsub 不能用 php-bcmath 扩展安装

    今天在迁移一台服务器以后发现有个页面出现空白,无任何报错,后来分析代码发现有个函数bcsub,注释掉以后就可以使用了。

    运行bcsub函数需要 php-bcmath的扩展。

    Php: BCMath

    bc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值。这里大数直接用一个由0-9组成的string表示,计算结果返回的也是一个 string。

    bcadd — 将两个高精度数字相加

    bccomp — 比较两个高精度数字,返回-1, 0, 1

    bcdiv — 将两个高精度数字相除

    bcmod — 求高精度数字余数

    bcmul — 将两个高精度数字相乘

    bcpow — 求高精度数字乘方

    bcpowmod — 求高精度数字乘方求模,数论里非常常用

    bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”

    bcsqrt — 求高精度数字平方根

    bcsub — 将两个高精度数字相减

    可以参考手册去查这些函数的应用。

    bcmath的安装:
    yum install php-bcmath
    Reload php-fpm,nginx
    systemctl reload nginx.service
    systemctl reload php-fpm.service
    重新打开页面,恢复正常。
  • Nginx 下 ThinkPHP URL 的 PATHINFO 与 REWRITE 重写 配置方法

    尝试了下 ThinkPHP 框架, 版本为 3.2.3。本文内容为解决 Nginx 下 ThinkPHP URL 模式中所用到的 PATHINFO 与 REWRITE 模式的配置问题。并在 Mac OS X 10.10 下 Nginx 1.8.0 + PHP 5.6.8 下测试通过。理论同样适用于各版本的 Linux 系统中。

    PATHINFO 与 REWRITE 模式在表现上的不同在于浏览器的 URL 地址栏中, 以访问 Home 模块, User 控制器, login 操作为例:

    PATHINFO 下的 URL: http://laoji.org/index.php/Home/User/login
    REWRITE 下的 URL: http://laoji.org/Home/User/login

    Nginx 开启 PATHINFO

    在这之前, 笔者也到搜索引擎上看了几篇关于 Nginx 配置 PATHINFO 的方法, 感觉有点乱, 乱的原因主要是由于 Nginx 没有给予像 Apache 那样一个参数即可开启 PATHINFO 的良好支持, 因此出现了各种 Nginx 下开启 PATHINFO 的解法。

    这里提供的是参阅 Nginx 官方文档并结合实测可用后的 PATHINFO 的方案。去除不必须的注释, Nginx 开启 PATHINFO 的 server 部分配置如下:

    server {
    listen 80;
    server_name localhost;

    location / {
    root /wwwroot/laoji.org; # 你的 TP 框架 index.php 所在目录, 记得用 / 分割路径
    index index.php index.html index.htm;
    }

    # …

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ ^(.+\.php)(.*)$ {
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME? $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }

    这种做法的原理是当请求的访问路径中含有 .php 时, 通过正则表达式构造出 PATHINFO, 并设置到 fastcgi 的参数 PATH_INFO 中。

    代码中匹配 PATH_INFO 的正则表达式来源于 Nginx 官方文档中的写法。参见:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info

    PATHINFO 模式是 ThinkPHP 默认的 URL 模式, 因此不需要修改 ThinkPHP 的默认配置即可使用http://serverName/index.php/模块/控制器/操作 方式访问。


    URL REWRITE 模式

    REWRITE 模式也称 URL重写, 可用于隐藏 PATHINFO 模式路径中的 index.php, 开启 REWRITE 模式的 Nginx 配置为:

    server {
    listen 80;
    server_name laoji.org;

    location / {
    root /wwwroot/laoji.org;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?s=$uri; # 核心
    }

    # …

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME? $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }

    配置完成后修改 ThinkPHP 的 URL 模式为 REWRITE, 编辑配置文件 ThinkPHP/Conf/convention.php 中修改 URL_MODEL 参数值为 2 (REWRITE 模式)即可通过 http://serverName/模块/控制器/操作 方式访问。

  • CentOS配置Nginx官方Yum源 进行安装 图文教程

    CentOS配置Nginx官方Yum源 进行安装 图文教程

    nginx

    这不是前两天子凡搞了个小鸟云的免费云主机,正准备搭建个WEB环境来玩玩,结果直接使用“yum -y install nginx”安装才发现默认yum仓库没有nginx,所以就无法直接安装nginx了,所以今天就和子凡一起来简单的配置一下吧!

    由于yum源中没有我们想要的nginx,那么我们就需要创建一个“/etc/yum.repos.d/nginx.repo”的文件,其实就是新增一个yum源。

    vi /etc/yum.repos.d/nginx.repo

    然后将下面的内容复制进去:

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1

    然后保存“/etc/yum.repos.d/nginx.repo”文件后,我们就使用yum命令查询一下我们的nginx的yum源配置好了没有。

    # yum list |grep nginx
    nginx.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-debug.x86_64 1:1.8.0-1.el7.ngx nginx
    nginx-debuginfo.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-module-geoip.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-module-image-filter.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-module-njs.x86_64 1:1.10.1.0.0.20160414.1c50334fbea6-1.el7.ngx
    nginx
    nginx-module-perl.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-module-xslt.x86_64 1:1.10.1-1.el7.ngx nginx
    nginx-nr-agent.noarch 2.0.0-9.el7.ngx nginx
    pcp-pmda-nginx.x86_64 3.10.6-2.el7 base

    如果执行命令是这样的显示效果,那么我们的nginx的yum源就配置成功啦!

    然后要安装我们的nginx就直接执行:

    yum -y install nginx

    如果操作正确到这里nginx环境就已经安装OK了。

    当然你还可以使用命令查一下究竟是否安装完成。

    # rpm -q nginx
    nginx-1.10.1-1.el7.ngx.x86_64

    不解释,已经成功了,并且是nginx官方的最新版本。

  • Discuz! X3 更换域名 迁移服务器 实例

    准备工作 :

    因为域名更换了,因此原域名就不能再进后台了,请申请好新域名,并正确备案,让机房添加白名单,重新解析,重新绑定空间….. 完成一系列工作后,进入DZ程序修改。

    正式工作:

    1、把config/config_global.php??和 config_global_default.php 中的内容相应修改

    $_config['cookie']['cookiedomain'] = '.laoji.org';
    $_config['admincp']['runquery'] = 1;? ? ? ? ? ? ? ? // 是否允许后台运行 SQL 语句 1=是 0=否[安全]

    我们有时在迁移服务器后,使用IP临时访问时可能会遇到admin.php无法登陆的情况,记得修改一下上面的$_config[‘cookie’][‘cookiedomain’],否则cookie不对,造成无法登陆。点击之后变成了刷新页面。

    2、请直接使用 http://新域名/admin.php 登录后台。
    3、需要修改哪些东西呢?

    1.后台==>全局==>站点信息==>网站url

    2.后台==>全局==>域名设置==>应用域名==>论坛和根域名设置手机版访问设置:— 手机发帖来源自定义:

    3.后台==>界面==>导航==>链接里面使用了绝对地址需要修改为新域名

    4.后台==>运营==>关联连接,没有设置就不用修改,在这里主要涉及优化??(站点宣传广告、友情链接)

    5.后台==>云平台==>同步站点信息? ?后台—工具—去平台诊断工具 (可能要手动设置IP)

    6.后台==>站长==>ucernter设置==>ucenter访问地址7.ucenter==>应用管理==>应用的主url

    如果是*Unix服务器,记得修改文件权限。

    BBS导航—顶部、底部??(版规网址要更新),论坛格子广告,贴间广告,列表广告全部要更新。**************
    修改遇到的问题解答:

    1.如果您已经修改了域名解析请直接使用http://新域名/admin.php登录之后,进行上述修改
    2.后台登陆不了,被自动退出请把config/config_global.php中的$_config[‘admincp’][‘checkip’] = 1;修改为$_config[‘admincp’][‘checkip’] = 0;

    ———————–
    完成以上工作后,您已经可以正常访问新域名了,但是原来已经发贴的内容网址没有变化,要执行下面的步骤才会变新网址。

  • WeTest 腾讯质量开放平台 WeTest服务器压力测试-简单模式介绍

    WeTest腾讯质量开放平台,国产DDCC免费利器。不需要验证域名所有权就可以做HTTP直接压力测试。照这个套路可以轻松打死一般小站。

    官方直达链接:http://wetest.qq.com/gaps

    逢年过节如果坐高铁回家的话一定要上12306来刷票,然而可能已经代表中国处理最高并发用户复杂请求的12306也经常会承受不住巨大的请求量。

    为了买票,我们也是忍了,如果不是非用不可的网站,恐怕经常给出这样的提示之后用户就直接流失了。准确掌握服务器的可承受能力是非常重要的,服务器在上线之前一定要测试其负载能力,以免出现用户因服务器无法访问而流失的情况。

    WeTest压测最近推出了简单模式,主要是针对Web网站、APP服务器提供压力源、URL直压以及测试结果分析。
    WeTest简单模式主要有以下几个特点:
    简单。人类懒的特性驱动着科技的进步,使用简单模式的时候用户不用写代码,只需简单的点点就可以啦。
    易用。WeTest平台提供压力机,可以无上限从云端产生压力。
    可视化。通过在服务器部署监控进程可以生成多种性能报表,指标一目了然,方便分析和诊断问题。
    业务场景模拟。对于复杂的场景可以通过编程来实现,真实模拟现网业务。

    我们以百度首页为例,看看如何在一分钟内发起压力的。
    1.首先点击压测产品首页中的快捷入口:HTTP直压。

    2.模式选择简单模式,名称和描述可以自己填写,起始人数这里选择5人,每隔30秒增加5人,直到加到10人上限。

    3.新建一个客户端请求,方法选择GET,URL就直接填写“http://www.baidu.com ”,URL变量和Header变量这里可以不填了。

    注:填写Header信息或修改参数化变量可以满足更高要求的测试场景,具体可以查看更一步的帮助,在本篇中不作展开

    4.编辑一下测试模型,增加一个场景名,压测场景选择百度的URL,由于只有一个压测场景,所以把所有100%的压力都放在该场景上。

    由于我们测的是百度首页,不是我们自己的服务器,无法去服务器上部署性能观测工具监测CPU,内存等性能情况,这里就可以不用填。

    5.保存设置。

    您也可以选择‘立即执行’这个测试,测试会马上进入排队系统,如果压力源系统内有空闲资源将马上为您执行测试

    6.保存之后会跳转到测试用例列表,这里我们点击开始即可进行测试。

  • ThinkPHP View视图 模板使用实例总结

    ThinkPHP 如何把获取到的日期格式的时间转化为时间戳

    如果有日期输出,即$data.time不为空且不为0,则格式化时间戳,否则默认当前时间戳,并格式化成日期格式

    {$data.time|default=time()|date='Y-m-d',###}

    Thinkphp模板中截取字符串函数简介

    英文字符可使用如下形式:

  • 微信小视频等素材下载保存到电脑 图文教程

    新版微信朋友圈可以发小视频了,而近日看到很多朋友发的视频想保存下了,点击却发现只有“收藏”或举报功能。而收藏的在清理垃圾后又得在线重新下载才行,总之,最好还是保存到电脑最好了。那新版的微信怎么将朋友圈的小视频下载保存到电脑上才是上策。这里我们还是用电脑来操作方便。

    1.登录到电脑版微信。

    2.打开“设定”–“文件管理”

    20161019103337

    3.打开对应的“用户”–“video”文件夹即可。

    20161019103554

    这里已被保存为.mp4视频了。

     

  • 谷歌chrome浏览器 百度浏览器 伪装微信浏览器UA UserAgent

    我们在一些开发项目中需要涉及到微信的开发,必不可少的需要模拟微信浏览器,下面记录一下使用的方法。

    添加微信Wechat User-Agent:

    1.打开谷歌浏览器(百度浏览器),按F12出现以下界面
    20161018144216
    2.在User-Agent填入以下任何一个文件头
    模拟iPhone:

    Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2
    

    模拟Android:

    Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255
    
    20161018144340

    模拟Wechat浏览器:

    1.点击手机图标:
    20161018144537
    2.选择我们刚刚添加的WeChat:
    20161018144559

  • php curl 模拟搜索引擎爬虫实例 360Spider

    PHP 使用Curl函数模拟搜索引擎蜘蛛爬虫,我们这里以so.com (360Spider)为例:

    <?php	
        print_r(_GetContent('http://www.laoji.org'));
        /**
         * cURL获取网页内容
         */
        function _GetContent( $url )    {
            $curl = curl_init();//初始化一个curl会话;
            curl_setopt($curl,CURLOPT_URL,$url);//指定访问的url
            curl_setopt($curl,CURLOPT_USERAGENT,"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider");
            curl_setopt($curl,CURLOPT_POST,$data);//post请求的参数,
            curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的方式返回
            $data = curl_exec($curl);//执行curl;
            curl_close($curl); // 关闭CURL会话
            return $data;
        }
    

     

  • Discuz! Database Error(1062) Duplicate entry ‘0’ for key ‘invisible’

    今天早上打开论坛发现无法发帖,发帖后提示?Discuz! Database Error(1062) Duplicate entry ‘0’ for key ‘invisible’.

    后来发现,原来是数据库表崩坏造成的。

    我们进入shell,然后进入到mysql的命令行模式(如果是网页版的phpmyadmin,可能会因为网页超时而出现错误):

    # mysql -uroot -p ? ? ? ? ? ? ?#这里注意必须要有权限进行表的修复。
    mysql> use database;
    mysql> repair table pre_forum_thread;
    mysql> repair table pre_forum_threadaddviews;

    +———————————+——–+———-+————————————————+
    | Table | Op | Msg_type | Msg_text |
    +———————————+——–+———-+————————————————+
    | xjjbbs.pre_forum_threadaddviews | repair | warning | Number of rows changed from 1196698 to 1196658 |
    | xjjbbs.pre_forum_threadaddviews | repair | status | OK |
    +———————————+——–+———-+————————————————+
    2 rows in set (0.92 sec)

    mysql> repair table pre_forum_post;

    +———————–+——–+———-+————————————————+
    | Table | Op | Msg_type | Msg_text |
    +———————–+——–+———-+————————————————+
    | xjjbbs.pre_forum_post | repair | warning | Number of rows changed from 1991044 to 1991046 |
    | xjjbbs.pre_forum_post | repair | status | OK |
    +———————–+——–+———-+————————————————+
    2 rows in set (1 min 14.96 sec)

    依次对坏的表进行修复即可~

  • 腾讯云CDN 申请安全认证 网站链接小绿标

    前面我们介绍了腾讯云CDN 已认证微信公众号 连续12个月每个月50G的免费流量包 获取方法,后来群里的小伙伴提到使用腾讯云CDN以后可以免费申请腾讯云网站链接小绿标。

    20161011150317

    小绿标:在腾讯QQ聊天时发送网址显示的绿色标记。

    具体方法如下:

    1.登录控制台https://console.qcloud.com/dayu/url

    2.申请安全认证,填写网址即可。

    20161011151655

    qq%e6%88%aa%e5%9b%be20161011150115

  • 腾讯云CDN 已认证微信公众号 连续12个月每个月50G的免费流量包 获取方法

    最近我们认证了一个微信公众号服务号:WeLoveLei ,发现腾讯云居然可以连续12个月每个月送50G的免费CDN流量包

    微信公众号认证费是¥300/年,但是我们可以把它换成CDN流量包跟腾讯云安全防护。

    具体方法如下:

    1.登陆微信公众号平台,点击“开发者工具”菜单

    qq%e6%88%aa%e5%9b%be20161011141042

    qq%e6%88%aa%e5%9b%be20161011141054

    2.进入腾讯云CDN加速,立即开通,然后一步步填充即可~

    qq%e6%88%aa%e5%9b%be20161011141216

    qq%e6%88%aa%e5%9b%be20161011141249

     

    腾讯云安全防护,免费试用时间只有1个月。

WeChat