爱数据专家

123
查看: 3730|回复: 1
打印 上一主题 下一主题

[本站原创] discuz X3.2修改文件支持https的教程,亲测成功!

[复制链接] [手机访问]

企业官网 爱华网 电话:0898-36692983

  • TA的每日心情
    奋斗
    2021-3-8 16:30
  • 签到天数: 122 天

    [LV.7]常住居民III

    管理员

    爱网指数:
    488.17点

    资料完善: 40%

    193

    主题

    205

    帖子

    1万

    积分

    玖币:790 元

    爱币:4427 枚

    金券:2848 券

    银子:7847 两

    跳转到指定楼层
    楼主
    发表于 2017-11-20 14:01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 | 招呼Ta 关注Ta
    discuz X3.2在系统上是支持https的,不过需要手动修改几个地方。首先确保服务器端已开启https,且正确配置了SSL证书。

    一、手动修改版(适合修改了源码的站长):

    discuz X3.2开启支持https主要需要修改一下几个地方:

    1、查找修改文件discuz_application.php :(适用于nginx+pfm环境)
    source/class/discuz/discuz_application.php (约第 187 行处): 查找:
    $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

    修改为:
    $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

    2、查找修改文件avatar.php :
    uc_server/avatar.php (约第 13 行处)查找:
    define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

    修改为:
    define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

    3、除去非 HTTPS 内容避免提示”不安全内容“
    Source/plugin/manyou/Service/DiscuzTips.php ,最后的那段 JS 加载脚本删除就行。
    非楼主层如果有点评,那么点评者头像不是 HTTPS 开头,也需要修改一个文件来适配: template/default/forum/viewthread_node_body.htm (约 180 行),搜索 div class="psta vm">,将下面一行注释掉或者删除。
    打开浏览器,使用开发者工具或者查看源码逐一排查加载的非 HTTPS 资源并修改。

    4、后台设置的修改完善
    在后台还有一些设置,可能会干扰 https 的使用。
    后台 >全局 > 站点 URL ,改为 https 开头的
    后台 > 站长 > UCenter 设置 > UCenter 访问地址,修改为 https 开头的
    UCenter 后台 > 应用管理 > 应用的主 URL ,修改为 https 开头。
    修改后可能会显示通讯失败,如果 UC 和论坛程序安装在同一机器,此失败可无视,实测可以和 UC 正常通讯不影响(测试是否正常通讯程序的 Bug ),如果 UC 和论坛程序不在一台机器上,有可能不能通讯。 另外在 后台 > 全局 > 域名设置 中的一些设置也可能使 https 失效,如果更新缓存后论坛默认连接还是 HTTP ,请删除 后台 > 全局 > 域名设置 > 应用域名 > 默认 里面的默认域名(一般去 forum.php 尾巴这里会有内容,为了 HTTPS 请删除)。

    5、模板的调整
    主要在模板的 foot.html 以及 header.html 等文件中,使用工具逐一排查模板文件中写死的 HTTP 链接,修改为 HTTPS 。

    6、DISCUZ开启https后ucenter通信失败解决方法
    DISCUZ 开启https后ucenter通信失败解决方法,一般是做完301重定向https后通信失败的,下面是具体解决方法:

    打开目录 uc_server/model/misc.php 文件;
    找到68行,在其下插入下面代码:
    1. if(substr($url,0,5)=='https'){
    2. $ch = curl_init($url);
    3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    4. if($post){
    5. curl_setopt($ch, CURLOPT_POST, 1);
    6. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    7. }
    8. if($cookie){
    9. curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    10. }
    11. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    12. return curl_exec($ch);
    13. }
    复制代码

    7、数据库的调整
    在论坛这种交互社区中,经常回复发帖时会有出现主域名的链接,在没有 HTTPS 之前,链接都是 HTTP 开头,这个时候,我们需要修改数据库,运行下面的 mysql 命令更新数据库,将 HTTP 替换为 HTTPS :
    进入 DZ 后台:站长 – 数据库 – 升级

    UPDATE pre_forum_post SET message=REPLACE(message,'http://你的网址','https://你的网址');

    需要注意的是,出于安全考虑, Discuz 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,如果想自己随意书写 SQL 升级语句,需要将程序文件 config/config_global.php 当中的$_config[admincp][runquery] 设置修改为 1 。

    到此,discuz X3.2已经开启支持https了 。

    当然,你还需要申请SSL证书、在服务器端部署SSL证书。

    提示:discuz开启全站https后,discuz应用中心无法访问,那么究竟是什么原因呢。

    问题分析:主要是在https模式下,是不允许使用框架来加载http的网页。所以导致在后台使用https时,是无法直接打开应用中心的。

    解决办法:直接在浏览器新窗口打开discuz应用中心,登录应用中心账号,安装应用即可

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享

    爱数据专家 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与爱数据专家享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和爱数据专家的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、爱数据专家管理员和版主有权不事先通知发贴者而删除本文

    回复

    使用道具 举报

    企业官网 爱华网 电话:0898-36692983

  • TA的每日心情
    奋斗
    2021-3-8 16:30
  • 签到天数: 122 天

    [LV.7]常住居民III

    管理员

    爱网指数:
    488.17点

    资料完善: 40%

    193

    主题

    205

    帖子

    1万

    积分

    玖币:790 元

    爱币:4427 枚

    金券:2848 券

    银子:7847 两

    沙发
     楼主| 发表于 2017-11-20 14:46:35 | 只看该作者 | 招呼Ta 关注Ta
    一、懒人版补丁包(适合没修改过DZ内核源码的站长):

    1、下载并上传履盖以下补丁包: DZ3.2开启SSL补丁包.zip (18.03 KB, 下载次数: 10, 售价: 10 枚爱币)

    2、执行楼上第4、5步即可完成

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

      网站条款

    • 版权说明
    • 隐私条款
    • ----------
    二维码图片
    GMT+8, 2024-5-3 03:55, 地址:海口市龙华区龙昆北路海外大厦15楼3A   琼公网安备46010802000247号

    © 2002-2021 虹鑫科技 ( 琼ICP备07000595号-5 ) 本站已运行天 空间、技术由 9in1.cn 全程赞助

    快速回复 返回顶部 返回列表