Nginx禁止未绑定域名或IP访问

该怎么防止别人的域名能访问我们的网站呢,nginx下关闭空主机头:
在所有server之前添加一下配置:以下红色部分根据需要选择其中一种方式处理即可。

 server{
  listen 80 default;
  server_name _; ##标示空主机头
     rewrite ^(.*) http://www.netpc.com.cn; ##将流量引到自己的网站
     return 500; ##返回500或304
 }
发表在 服务器 | 标签为 | 留下评论

yii2打开gii工具的方法

入口文件index.php

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

在配置config文件夹的web.php或main.php、main-local.php文件中包含以下内容

if (!YII_ENV_TEST) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
    ];
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

如果开启了url美化,访问地址会产生变化

'urlManager' => [
    'enablePrettyUrl'     => true,
    'showScriptName'      => false,
    'enableStrictParsing' => false,
    'rules' => [
    ],
],

访问地址:

http://localhost/gii
http://localhost/index?r=gii
发表在 服务器 | 标签为 | 留下评论

微信小程序中文乱码转换编码

今天刚接触下微信小程序试试,发现用接口获取新闻列表,原先中文进行了编码转换,在pc浏览器上会自动转换显示,到小程序不会了,这时候必须自己手动转码了,看下面红色部分:

Page({
 data: {
 logs: []
 },
 onLoad: function () {
 var that = this//不要漏了这句,很重要
wx.request({
 url: 'http://www.netpc.com.cn/api/getNewsList',
 headers: {
 'Content-Type': 'application/json',
 },
 success: function (res) {
 //console.log(res.data);
 //接口获取数据后如果有中文编码必须使用decodeURI或decodeURIComponent解码
  var query_clone = JSON.parse(decodeURIComponent(JSON.stringify(res.data)));
 //console.log(query_clone);
 //将获取到的json数据,存在名字叫zhihu的这个数组中
 that.setData({
 news: query_clone,
})
 }
 })
 }
})
发表在 服务器 | 标签为 , | 留下评论

Chrome安装crx插件提示:无法添加来自此网站的应用、扩展程序和应用脚本

官方出于安全考虑,最新Chrome版本开始默认只允许从 Chrome Web Store 下载安装扩展程序。
解决方法如下:
  1. 浏览器打开 chrome://extensions/ 地址
  2. 直接将下载好的Chrome应用*.crx或者脚本**.js文件拖到扩展程序界面就好了。
发表在 服务器 | 标签为 | 留下评论

微信开发config:invalid url domain

当遇到config:invalid url domain 有2种可能

1.没有配置url。

2.url配置错误。记住不要带http://或https://直接域名就可以了,如:www.netpc.com.cn

发表在 服务器 | 标签为 | 留下评论

微信开发config:invalid signature

JS-SDK使用权限签名算法

在获取jsapi_ticket的时候出现签名错误config:invalid signature

签名算法

签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

即signature=sha1(string1)。 示例:

noncestr=Wm3WZYTPz0wzccnW

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg

timestamp=1414587457

url=http://mp.weixin.qq.com?params=value

步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

步骤2. 对string1进行sha1签名,得到signature:

0f9de62fce790f9a083d5c99e95740ceb90c27ed

注意事项

1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。

2.签名用的url必须是调用JS接口页面的完整URL。

3.出于安全考虑,开发者必须在服务器端实现签名的逻辑。

如出现invalid signature 等错误详见附录5常见错误及解决办法。

最后发现是jsapi_ticket参数没有传送进函数。

发表在 服务器 | 标签为 | 留下评论

Nginx开启SSI模块支持shtml

今天需要shtml,测试了下,很简单在nginx.conf 文件的 http{} 段中,以开启 SSI 模块的支持:

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;

重启nginx即可

带点shtml语法

SSI有什么用?

之所以要扯到 SSI,是因爲 Shtml – Server-Parsed HTML 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。

目前,主要有以下几种用用途:

  1. 显示服务器端环境变量<#echo>
  2. 将文本内容直接插入到文档中<#include>
  3. 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
  4. 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
  5. 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)

#echo 示范

作用:将环境变量插入到页面中。

语法:

<!–#echo var=”变量名称”–>

示例:

<!–#echo var=”DOCUMENT_NAME”–> 本文档名称
<!–#echo var=”DATE_LOCAL”–> 现在时间
<!–#echo var=”REMOTE_ADDR”–> 你的IP地址

#include 示范

作用:将文本文件的内容直接插入到文档页面中。

语法:

<!–#include file=”文件名称”–>
<!–#include virtual=”文件名称”–>

file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file=”nav_head.htm”。
virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file=”/hoyi/nav_head.htm”

参数:

file 指定包含文件相对于本文档的位置
virtual 指定相对于服务器文档根目录的位置

注意:

  1. 文件名称必须带有扩展名。
  2. 被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便,微软公司推荐使用 .inc 扩展名(这就看你的爱好了)。

示例:

<!–#include file=”nav_head.htm”–> 将头文件插入到当前页面
<!–#include file=”nav_foot.htm”–> 将尾文件插入到当前页面

发表在 服务器 | 标签为 , | 留下评论

PHP多线程扩展Pthreads只能运行在ts安全线程

本来想测试下,结果无论本地或生产环境都是nts,所以这里只说安装,不说使用,因为没用上。

windows版本的下载地址
http://windows.php.net/downloads/pecl/releases/pthreads/
找个最新版本下载解压:

把pthreadVC2.dll和php_pthreads.dll文件,把vc2文件放到php.exe同级目录,把php_pthreads.dll放到扩展目录下。

1、修改php.ini文件 添加extension=php_pthreads.dll
2、Apache还需要修改配置文件httpd.conf 添加LoadFile “X:/php5/pthreadVC2.dll”
3、重启php服务

 linux版本的下载地址

http://pecl.php.net/package/pthreads

找个最新版本下载解压:

1.解压tar -zxvf pthreads-3.1.6.tgz ;

2.进入源码文件夹 cd pthreads-3.1.6 执行 /usr/local/php/bin/phpize;

3.执行./configure –with-php-config=/usr/local/php/bin/php-config;

4.执行make && make install;

5.编辑/usr/local/php/lib/php.ini加上extension=pthreads.so

6.重启php服务

发表在 服务器 | 标签为 | 留下评论

mysql跨表截取字符串过滤html替换

使用截取sql为:

UPDATE table1,table2 SET table1.description=left(trim(strip_tags(table2.content),180))  where table1.id= table2.id

用到以下函数和自定义strip_tags函数

1、从左开始截取字符串
left(str, length)
说明:left(被截取字段,截取长度)
例:select left(content,200) as abstract from my_content_t
2、从右开始截取字符串
right(str, length)
说明:right(被截取字段,截取长度)
例:select right(content,200) as abstract from my_content_t
3、截取字符串
substring(str, pos)
substring(str, pos, length)
4、trim//左右去空格
5、除去换行符
UPDATE table1 SET description=REPLACE(description,CHAR(13),”);
UPDATE table1 SET description=REPLACE(description,CHAR(10),”);
6、自定义函数用个新版的phpmyadmin添加就可以了,免去用命令行的麻烦。

选择某个数据库然后,点上面的程序-> 添加程序,函数名strip_tags,变量$str,类型和返回值都是text,定义就复制下面红色部分。
CREATE FUNCTION `strip_tags`($str text) RETURNS text
BEGIN
 DECLARE $start,$end INT DEFAULT 1;
 LOOP
  SET $start = LOCATE(“<“, $str, $start);
  IF (!$start) THEN RETURN $str; END IF;
  SET $end = LOCATE(“>”, $str, $start);
  IF (!$end) THEN SET $end = $start; END IF;
  SET $str = INSERT($str, $start, $end – $start + 1, “”);
  END LOOP;
END;

发表在 服务器 | 标签为 | 留下评论

php编译安装Swoole扩展

安装swoole前必须保证系统已经安装了下列软件

php-5.3.10 或更高版本
gcc-4.4 或更高版本
make
autoconf

下载地址

  • https://github.com/swoole/swoole-src/releases
  • http://pecl.php.net/package/swoole
  • http://git.oschina.net/swoole/swoole

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装

这里我选择php官方网站下载安装包,找stable稳定版。

wget http://pecl.php.net/get/swoole-1.9.10.tgz
tar zxvf swoole-1.9.10.tgz
cd swoole-1.9.10
phpize
./configure
make 
sudo make install

PECL

swoole项目已收录到PHP官方扩展库,除了手工下载编译外,还可以通过PHP官方提供的pecl命令,一键下载安装swoole

pecl install swoole

配置php.ini

编译安装成功后,修改php.ini加入

extension=swoole.so

通过php -mphpinfo()来查看是否成功加载了swoole,如果没有可能是php.ini的路径不对,可以使用php -i |grep php.ini来定位到php.ini的绝对路径。

重启php,执行php -m命令看下是不是有该扩展了。

发表在 服务器 | 标签为 , | 留下评论