weiphp3.0(thinkphp)的调整之路
weiphp是在thinkphp的基础上开发的简洁强大开源的微信公众平台开发框架,其宣称微信功能插件化开发,多公众号管理,配置简单。
但是关于weiphp的文档使用一是内容真不多,二是写的也不详细。
说说我的需求吧,weiphp安装到一台独立的php机器上,本机使用nginx+fast-cgi方式代理访问。现在想把我们另一个主站点的域名挂一个location解析到这台weiphp的机器上,因为主站点是https的,所以调试更麻烦了些。
遇到的问题是,
1. 做的微信互动应用需要获取微信用户信息授权,微信公众号的域名已被配置为主域名,不能修改为搭建的weiphp站点的新域名。
2. 我们的配置主域名是https的,需要修改weiphp里的源码适应https访问,加载资源。
调整:
1、nginx配置。
weiphp为独立php环境,机器ip为:10.10.10.1,机器本上已有nginx+fast-cgi在运行,需要大前端nginx配置location代理到这台机器上。
upstream weiphp{
server 10.10.10.1:;
}
location /weiphp {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://weiphp/;
}
location /Public {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://weiphp/Public;
}
location /Uploads {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://weiphp/Uploads;
}
location /Addons {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://weiphp/Addons;
}
location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://weiphp;
}
2. 源码调整。
为啥?因为微信站点的域名是https的,必须要weiphp适应为https。但是thinkphp的机制是默认适应http协议。
a,Application/Home/View/default/Public/mobile_head.html
修改微信饮用js地址 http://res.wx.qq.com/open/js/jweixin-1.0.0.js 为 https://res.wx.qq.com/open/js/jweixin-1.0.0.js。
修改zepto引用地址 http://yaotv.qq.com/shake_tv/include/js/lib/zepto.1.1.4.min.js 为 https://yaotv.qq.com/shake_tv/include/js/lib/zepto.1.1.4.min.js。
b,ThinkPHP/ThinkPHP.php
先添加常量
//self define by pautcher
define ('DX_DOMAIN','h5.mydomain.com');
将原来SITE_URL的定义取消,修改为如下
//define ( 'SITE_URL', 'http://' . SITE_DOMAIN . __ROOT__ );
if (stristr(SITE_DOMAIN,DX_DOMAIN)!=FALSE) {
define ( 'SITE_URL', 'https://' . SITE_DOMAIN . __ROOT__ );
}
if (! defined ( 'SITE_URL' )) {
define ( 'SITE_URL', 'http://' . SITE_DOMAIN . __ROOT__ );
}
c. ThinkPHP/Common/functions.php
修改U方法,在return $url之前添加如下语句。
if(stristr($url,DX_DOMAIN)!=FALSE){
$url = str_replace('http:','https:',$url);
}
d. ThinkPHP/Library/Think/YunVerify.class.php
查找 $url = "http://" . self::$ip . ":" . self::$port . $uri; //生成最后的URL
找到后,在语句后面追加下面一段代码。
if(stristr($url,DX_DOMAIN)!=false){
$url = "https://" . self::$ip . ":" . self::$port . $uri;
}
注意,这个文件里有两处代码。
e. Application/Home/View/default/Addons/preview.html
修改下方一段script语句为如下,
<script type="text/javascript">
var preurl = "{$url}";
if(preurl.indexOf("h5.daxia520.com")>-1 && preurl.indexOf("https")==-1){
preurl = preurl.replace("http","https");
}
var url = preurl+"&publicid={$public_info.id}";
$('#frame').attr('src',preurl);
$('#canvas').qrcode({width:200,height:200,text:url});
</script>
f. Public/scene/index.html
在下面这段代码后面添加一段代码:
var PREFIX_URL = "http://"+window.location.host+"/json/";
var VIEW_URL = "http://"+window.location.host+"/";
var JSON_URL = "http://"+window.location.host+"/index.php";
var PREFIX_S1_URL = "http://"+window.location.host+"/";
var PREFIX_HOST = "http://"+window.location.host+"/";
var SYS_FILE_HOST = "http://"+window.location.host+"/Uploads/syspic/";
var PREFIX_FILE_HOST = "http://"+window.location.host+"/userfiles/";
var PREFIXSYS_FILE_HOST = "http://"+window.location.host+"/Uploads/";
var USER_FILE_HOST = PREFIX_FILE_HOST;
var CLIENT_CDN = "http://"+window.location.host+"/Public/css/";
修改后如下所示:
var DX_DOMAIN = "h5.daxia520.com";
var PREFIX_URL = "http://"+window.location.host+"/json/";
var VIEW_URL = "http://"+window.location.host+"/";
var JSON_URL = "http://"+window.location.host+"/index.php";
var PREFIX_S1_URL = "http://"+window.location.host+"/";
var PREFIX_HOST = "http://"+window.location.host+"/";
var SYS_FILE_HOST = "http://"+window.location.host+"/Uploads/syspic/";
var PREFIX_FILE_HOST = "http://"+window.location.host+"/userfiles/";
var PREFIXSYS_FILE_HOST = "http://"+window.location.host+"/Uploads/";
var USER_FILE_HOST = PREFIX_FILE_HOST;
var CLIENT_CDN = "http://"+window.location.host+"/Public/css/";
if(window.location.host==DX_DOMAIN){
PREFIX_URL = "https://"+window.location.host+"/json/";
VIEW_URL = "https://"+window.location.host+"/";
JSON_URL = "https://"+window.location.host+"/index.php";
PREFIX_S1_URL = "https://"+window.location.host+"/";
PREFIX_HOST = "https://"+window.location.host+"/";
SYS_FILE_HOST = "https://"+window.location.host+"/Uploads/syspic/";
PREFIX_FILE_HOST = "https://"+window.location.host+"/userfiles/";
PREFIXSYS_FILE_HOST = "https://"+window.location.host+"/Uploads/";
CLIENT_CDN = "https://"+window.location.host+"/Public/css/";
}
然后,惊奇的发现,新的域名location配置支持了,https的请求也支持了。
weiphp3.0(thinkphp)的调整之路的更多相关文章
- Ubuntu14.0使用gparted调整分区大小
不知道为什么,我总会碰到一些疑难杂症,别人的分区都是在同一个目录下,直接通过,不断调整同一目录下相邻分区之间的空间来达到调整目标分区大小的目的 但我的不一样,我的主要分区在扩展分区下,极其魔性,图片里 ...
- 续drone 1.0 新界面调整
接以前的内容,drone 最新发布的版本又有界面信息的调整了,更方便了. 环境准备 docker-compose 文件 version: '3' services: drone-server: ima ...
- 《Java从0开始的成长之路》
大纲 这篇博文是我整理寒假一个月来的总结 作用一:主要是方便我以后复习,并尝试对Java虚拟机深度挖掘,希望各位前辈给予指点,我会潜心钻研,只希望水平更进一步. 作用二:闭关锁国终将遭遗弃,希望汇聚网 ...
- Xcode 5.1.1 与 Xcode 6.0.1 的共存之路(建议大家在升级Xcode 6.0.1 的时候保留Xcode 5.1.1)
最近升级了Xcode 6.0.1 与原有项目有不少冲突.建议大家谨慎升级,同时做好备份.二者共存推荐如下帖子. http://jingyan.baidu.com/article/1612d500457 ...
- 一张图看懂高通QC1.0-QC4.0快充进化之路!QC2.0跟QC3.0充电区别
快充技术日新月异,快充市场百家争鸣的今天,高通QC快充依然主导着市场.如今QC快充已发展到第四代,每一代都有着革命性的进步.从QC1.0到QC4.0更新换代时间之短,不免让广大人民群众抱怨. “啥?老 ...
- Unity 游戏框架搭建 (十六) v0.0.1 架构调整
背景: 前段时间用Xamarin.OSX开发一些工具,遇到了两个问题. QFramework的大部分的类耦合了Unity的API,这样导致不能在其他CLR平台使用QFramework. QFramew ...
- Ubuntu16.04+GTX 1080Ti+CUDA 8.0+cuDNN+Tesnorflow1.0深度学习服务器安装之路
0.安装背景 系统:ubuntu 16.04 内核:4.4.0-140-generic GPU:GTX 1080Ti nvidia驱动版本: 384.111 cuda: CUDA 8.0 深度学习库c ...
- thinkphp查询,3.X 5.0 亲试可行
[php] view plain copy print? 一.介绍 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到wher ...
- ThinkPHP 5.0.15中的update注入漏洞
漏洞demo: public function inc() { $username = request()->get('name/a'); db('user')->insert(['nam ...
随机推荐
- ACCESS数据库操作教程
网易学院视频教程: 上:http://tech.163.com/06/0621/17/2K5K0C2200091U6J.html中:http://tech.163.com/06/0621/17/2K5 ...
- CyanogenMod刷机以及Google Play应用商店安装方法介绍
http://blog.csdn.net/zcynical/article/details/19241595 写在前面: 本文介绍的方法除第一步外,适用于所有CM系统支持的设备,第一步由于用到了PC上 ...
- jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题
最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了.下面记录下排查和解决过程: 一. jmeter ...
- [java线段树]2015上海邀请赛 D Doom
题意:n个数 m个询问 每个询问[l, r]的和, 再把[l, r]之间所有的数变为平方(模为9223372034707292160LL) 很明显的线段树 看到这个模(LLONG_MAX为922337 ...
- PHP的执行原理/执行流程
http://www.cnblogs.com/hongfei/archive/2012/06/12/2547119.html 更深入的学习和了解可以查看下面: 风雨的博客http://www.laru ...
- 微信公众平台 Premature end of file
今天在研究微信公众平台 自动接收发送消息的时候,在如下代码: public String processRequest(HttpServletRequest request) { String res ...
- tcp连接的3次握手
http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-3.htm synchronou ...
- 1628. White Streaks(STL)
1628 题意不太好理解 求横黑条 和竖黑条共有多少个 注意1*1的情况 如果横向纵向都是1*1 算为一个 否则不算 用了下vector 枚举找下 #include <iostream> ...
- Mongodb的范式化和反范式化
如果是涉及到一对多的数据格式,可使用文档引用范式化数据. 在一个,User对象中,如果涉及到工作信息或者联系地址的,这些信息会频繁的进行访问,可使用嵌入式文档对数据进行反范式化.
- jquery 分页控件(一)
以前一直都是用别人的分页控件,虽然用得很爽,但总觉的还是自己写个小插件比较好,这个插件效果.代码等都有参照别人完成的控件.即便功能并不是那么完善,扩展性也不好,bug或许还很多.个人觉得,适合自己用就 ...