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代理到这台机器上。

  

  1. upstream weiphp{
  2.  
  3.   server 10.10.10.1:;
  4.  
  5.   }
  6.  
  7.   location /weiphp {
  8.  
  9. proxy_set_header Host $host;
  10.  
  11. proxy_set_header X-Real-IP $remote_addr;
  12.  
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14.  
  15. proxy_pass http://weiphp/;
  16.  
  17. }
  18.  
  19. location /Public {
  20.  
  21. proxy_set_header Host $host;
  22.  
  23. proxy_set_header X-Real-IP $remote_addr;
  24.  
  25. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  26.  
  27. proxy_pass http://weiphp/Public;
  28.  
  29. }
  30.  
  31. location /Uploads {
  32.  
  33. proxy_set_header Host $host;
  34.  
  35. proxy_set_header X-Real-IP $remote_addr;
  36.  
  37. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  38.  
  39. proxy_pass http://weiphp/Uploads;
  40.  
  41. }
  42.  
  43. location /Addons {
  44.  
  45. proxy_set_header Host $host;
  46.  
  47. proxy_set_header X-Real-IP $remote_addr;
  48.  
  49. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  50.  
  51. proxy_pass http://weiphp/Addons;
  52.  
  53. }
  54.  
  55. location ~ \.php$ {
  56.  
  57. proxy_set_header Host $host;
  58.  
  59. proxy_set_header X-Real-IP $remote_addr;
  60.  
  61. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  62.  
  63. proxy_pass http://weiphp;
  64.  
  65. }

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

先添加常量

  1. //self define by pautcher
  2.  
  3. define ('DX_DOMAIN','h5.mydomain.com');

将原来SITE_URL的定义取消,修改为如下

  1. //define ( 'SITE_URL', 'http://' . SITE_DOMAIN . __ROOT__ );
  2.  
  3. if (stristr(SITE_DOMAIN,DX_DOMAIN)!=FALSE) {
  4.  
  5. define ( 'SITE_URL', 'https://' . SITE_DOMAIN . __ROOT__ );
  6.  
  7. }
  8.  
  9. if (! defined ( 'SITE_URL' )) {
  10.  
  11. define ( 'SITE_URL', 'http://' . SITE_DOMAIN . __ROOT__ );
  12.  
  13. }

c. ThinkPHP/Common/functions.php

修改U方法,在return $url之前添加如下语句。

  1. if(stristr($url,DX_DOMAIN)!=FALSE){
  2.  
  3. $url = str_replace('http:','https:',$url);
  4.  
  5. }

d. ThinkPHP/Library/Think/YunVerify.class.php

查找 $url = "http://" . self::$ip . ":" . self::$port . $uri;    //生成最后的URL

找到后,在语句后面追加下面一段代码。

  1. if(stristr($url,DX_DOMAIN)!=false){
  2.  
  3. $url = "https://" . self::$ip . ":" . self::$port . $uri;
  4.  
  5. }

注意,这个文件里有两处代码。

e. Application/Home/View/default/Addons/preview.html

修改下方一段script语句为如下,

  1. <script type="text/javascript">
  2. var preurl = "{$url}";
  3. if(preurl.indexOf("h5.daxia520.com")>-1 && preurl.indexOf("https")==-1){
  4. preurl = preurl.replace("http","https");
  5. }
  6. var url = preurl+"&publicid={$public_info.id}";
  7. $('#frame').attr('src',preurl);
  8. $('#canvas').qrcode({width:200,height:200,text:url});
  9. </script>

f. Public/scene/index.html

在下面这段代码后面添加一段代码:

  1. var PREFIX_URL = "http://"+window.location.host+"/json/";
  2. var VIEW_URL = "http://"+window.location.host+"/";
  3. var JSON_URL = "http://"+window.location.host+"/index.php";
  4. var PREFIX_S1_URL = "http://"+window.location.host+"/";
  5. var PREFIX_HOST = "http://"+window.location.host+"/";
  6. var SYS_FILE_HOST = "http://"+window.location.host+"/Uploads/syspic/";
  7. var PREFIX_FILE_HOST = "http://"+window.location.host+"/userfiles/";
  8. var PREFIXSYS_FILE_HOST = "http://"+window.location.host+"/Uploads/";
  9. var USER_FILE_HOST = PREFIX_FILE_HOST;
  10. var CLIENT_CDN = "http://"+window.location.host+"/Public/css/";

修改后如下所示:

  1. var DX_DOMAIN = "h5.daxia520.com";
  2. var PREFIX_URL = "http://"+window.location.host+"/json/";
  3. var VIEW_URL = "http://"+window.location.host+"/";
  4. var JSON_URL = "http://"+window.location.host+"/index.php";
  5. var PREFIX_S1_URL = "http://"+window.location.host+"/";
  6. var PREFIX_HOST = "http://"+window.location.host+"/";
  7. var SYS_FILE_HOST = "http://"+window.location.host+"/Uploads/syspic/";
  8. var PREFIX_FILE_HOST = "http://"+window.location.host+"/userfiles/";
  9. var PREFIXSYS_FILE_HOST = "http://"+window.location.host+"/Uploads/";
  10. var USER_FILE_HOST = PREFIX_FILE_HOST;
  11. var CLIENT_CDN = "http://"+window.location.host+"/Public/css/";
  12. if(window.location.host==DX_DOMAIN){
  13. PREFIX_URL = "https://"+window.location.host+"/json/";
  14. VIEW_URL = "https://"+window.location.host+"/";
  15. JSON_URL = "https://"+window.location.host+"/index.php";
  16. PREFIX_S1_URL = "https://"+window.location.host+"/";
  17. PREFIX_HOST = "https://"+window.location.host+"/";
  18. SYS_FILE_HOST = "https://"+window.location.host+"/Uploads/syspic/";
  19. PREFIX_FILE_HOST = "https://"+window.location.host+"/userfiles/";
  20. PREFIXSYS_FILE_HOST = "https://"+window.location.host+"/Uploads/";
  21. CLIENT_CDN = "https://"+window.location.host+"/Public/css/";
  22. }

然后,惊奇的发现,新的域名location配置支持了,https的请求也支持了。

weiphp3.0(thinkphp)的调整之路的更多相关文章

  1. Ubuntu14.0使用gparted调整分区大小

    不知道为什么,我总会碰到一些疑难杂症,别人的分区都是在同一个目录下,直接通过,不断调整同一目录下相邻分区之间的空间来达到调整目标分区大小的目的 但我的不一样,我的主要分区在扩展分区下,极其魔性,图片里 ...

  2. 续drone 1.0 新界面调整

    接以前的内容,drone 最新发布的版本又有界面信息的调整了,更方便了. 环境准备 docker-compose 文件 version: '3' services: drone-server: ima ...

  3. 《Java从0开始的成长之路》

    大纲 这篇博文是我整理寒假一个月来的总结 作用一:主要是方便我以后复习,并尝试对Java虚拟机深度挖掘,希望各位前辈给予指点,我会潜心钻研,只希望水平更进一步. 作用二:闭关锁国终将遭遗弃,希望汇聚网 ...

  4. 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 ...

  5. 一张图看懂高通QC1.0-QC4.0快充进化之路!QC2.0跟QC3.0充电区别

    快充技术日新月异,快充市场百家争鸣的今天,高通QC快充依然主导着市场.如今QC快充已发展到第四代,每一代都有着革命性的进步.从QC1.0到QC4.0更新换代时间之短,不免让广大人民群众抱怨. “啥?老 ...

  6. Unity 游戏框架搭建 (十六) v0.0.1 架构调整

    背景: 前段时间用Xamarin.OSX开发一些工具,遇到了两个问题. QFramework的大部分的类耦合了Unity的API,这样导致不能在其他CLR平台使用QFramework. QFramew ...

  7. 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 ...

  8. thinkphp查询,3.X 5.0 亲试可行

    [php] view plain copy   print? 一.介绍 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到wher ...

  9. ThinkPHP 5.0.15中的update注入漏洞

    漏洞demo: public function inc() { $username = request()->get('name/a'); db('user')->insert(['nam ...

随机推荐

  1. 破解之API断点法

    上回给大家做的破解教程,地址是http://www.52pojie.net/thread-52719-1-1.html,用的是“调用堆栈”方法.今天给新手提供另一种方法“API函数断点”,这种方法要求 ...

  2. 可编辑的select框的实现(实用版)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>  <HEA ...

  3. cf 357C

    比赛的时候纯暴力超时了  看了别人的代码  set容器类做的   stl里还是有很多好东西的 /**************************************************** ...

  4. sort-based shuffle的核心:org.apache.spark.util.collection.ExternalSorter

    依据Spark 1.4版 在哪里会用到它 ExternalSorter是Spark的sort形式的shuffle实现的关键.SortShuffleWriter使用它,把RDD分区中的数据写入文件. o ...

  5. 作为 .Net 攻城师,所必需掌握的 .Net Profiling 技术

    众所周知,性能问题是所有实用应用在迭代过程中必然要面对的问题.对于此类问题,简单地投入更多硬件资源的做法可能会取得一定效果.但总的来看,此类做法的边际成本是不断上升的.换言之,随着性能需求的上涨,要换 ...

  6. linux Ubuntu12 设置root用户登录图形界面

    Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...

  7. PreparedStatement是如何大幅度提高性能的

    本文讲述了如何正确的使用prepared statements.为什么它可以让你的应用程序运行的更快,和同样的让数据库操作变的更快.  为什么Prepared Statements非常重要?如何正确的 ...

  8. 睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE

    http://i.cnblogs.com/EditPosts.aspx?opt=1   Two states are associated with sleeping, TASK_INTERRUPTI ...

  9. 去除html标签 正则 <.+?> 解释

    http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwWQhDvDEM51V_CcY_g1mZ7OPdcq8 ...

  10. 【HDOJ】4322 Candy

    状态DP显然可以解,发现T了,不知道优化后能不能过.然后发现费用流可以解.trick是对need拆解成need/K, need%K两种情况讨论. /* 4312 */ #include <ios ...