phpcms v9站http升级到https加http2遇到到坑
Author:zhoulujun Date:
本站现在迁移到腾讯云,升级http2和加https
nginx配置方面到坑,已经写了一篇:网站迁移云服务器血泪记—phpcms小站迁移
然后发现后台,很多地方出现错误。
然后百度搜索下,phpcms http https ,整理下,修改如下
phpcmsv9 全站https后台列表分页链接错误解决办法
\phpcms\libs\functions\global.func.php
找到:
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);
替换为:
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);
(这个主要影响phpcms 管理台 比如文章列表 分页 ,分页导航错误
phpcmsv9 全站https后台编辑站点域名无法提交
phpcmsv9 全站https后台编辑站点域名无法提交,在后台修改站点域名为https提交后提示“站点域名格式应该为http://www.phpcms.cn/,请以‘/’结束”,解决办法:
找开 phpcms\modules\admin 下的 site.php文件,在大约128行修改如下:
if (!empty($domain) && !preg_match('/http:\/\/(.+)\/$/i', $domain)) {
替换为:
if (!empty($domain) && !preg_match('/https:\/\/(.+)\/$/i', $domain)) {
找到
\phpcms\modules\content\templates\content_list.tpl.php
\phpcms\modules\content\templates\content_page.tpl.php
elseif(strpos($r['url'],'http://')!==false && strpos($r['url'],'https://')!==false) {
替换为:
找到
/www/zhoulujun/zhoulujun/phpcms/libs/classes/attachment.class.php
然后尼玛,直接 打包下载,把全局查找http:\/\/的地方,然后批量修改 ,全部改成
http[s]?:\\
例如:
$okurl = preg_replace('/^(http[s]?:\/\/)/i','',$okurl);
phpcms v9改成https后,通讯成功,但是无法登陆和注册
phpcms/modules/member/classes/client.class.php
中361行增加
$port = !empty($matches['port']) ? $matches['port'] : ( strtolower($matches['scheme'])=='https' ? 443 : 80 );
中386行替换为:
$contextOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) ); //如果有签名的证书 //$contextOptions = array( // 'ssl' => array( // 'verify_peer' => true, // 'cafile' => '/path/to/cacert.pem', // //'CN_match' => 'indexroot.net', // 匹配域名 // 'ciphers' => 'HIGH:!SSLv2:!SSLv3', // 'disable_compression' => true, // ) //); $context = stream_context_create($contextOptions); $fp = stream_socket_client("ssl://{$host}:{$port}", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
这个最初看到,想到我是https啊,时有证书到啊。但是证书只有crt版本,立马把crt转换为PEM,然后,配置,发现不行!再改ciphers和nginx配置一样,不行,再改域名配置,还是不行……
TMD……然后拍脑袋,直接干掉证书方面到配置,可行!
phpcms目录路径修改,数据库文章url也修改了,但是文章路径就是不对!如何处理?
之前我的站点是这样的,www.zhoulujun.cn/zhoulujun/文章目录
改版后是这样的:www.zhoulujun.cn/文章目录
因为在我的主域名下还有其它项目,zhoulujun这个目录存放平时文章,但是现在觉得有必要包文章目录移出来,起码对seo好点点(自我感觉),第二个URL也清爽点——之前没有想到会积累这么多文章内容。
把mysql数据导出,替换全部路径后,在导入mysql,清空和更新msyql缓存,更新phpcms缓存 ,栏目缓存,批量更新url地址,批量更新内容,更新缓存。重复n遍,发现,首页连接还是没有变
最后发现,phpcms\modules\content\create_html.php ,恢复原样后,更新成功。改的吐血啊。
// private function urls($id, $catid= 0, $inputtime = 0, $prefix = ''){ // $urls = $this->url->show($id, 0, $catid, $inputtime, $prefix,'','edit'); // //更新到数据库 //// $url = $urls[0]; // $url ="zhoulujun" .$urls[1]; // $this->db->update(array('url'=>$url),array('id'=>$id)); // //echo $id; echo "|"; // return $urls; // }
phpcms用微博帐号登录出错了 错误码:21322 重定向地址不匹配
/www/zhoulujun/zhoulujun/phpcms/modules/member/index.php
找到
define('WEB_CALLBACK', APP_PATH.'index.php?m=member&c=index&a=public_sina_login&callback=1');
修改
define('WEB_CALLBACK', 'https://www.zhoulujun.cn/index.php?m=member&c=index&a=public_sina_login&callback=1');
网上查询,结果都是
登录http://open.weibo.com ,选择[管理中心]->[我的应用]->[“您的应用名”]->展开左侧[应用信息]->[高级信息]->OAuth2.0 授权设置 右上角[编辑]->在框里填入回调地址即可.
实际新浪开放平台根本没有回调地址设置这个选项————还以为自己眼花找不到!
同样到,phpcms http升级https后,腾讯qq登录不对,应该去应用中心,更改回调地址。裁可以正常登录
The plain HTTP request was sent to HTTPS port
这个时nginx sll 设置为了on,
而且这个不能单独对某个域名进行设置,只要一个server_name设置了ssl on;都会报The plain HTTP request was sent to HTTPS port 这个错误。
我就设置了ssl off;让CDN强制http转https
iconfont彩色字体支持
iconfont用了好多年,手机端也用彩色svg,但是,考虑到网站是自适应,从fontclass转svg,然后又从svg转fontclass ,折腾。
百度站内搜索站内推荐不支持https
百度站内搜索,改from表单形式,浏览器还是提示mixed****,然后自己提交到二级域名so.zhoulujun.cn,再301跳转到search.zhoulujun.cn,感觉坑爹,还是,沿用自己的搜索引擎算了。看了下百度搜索API,准备自己开发,然后,文档,毛线……
站内搜索爷爷一样,nginx转发,然后发现,然后后台php索取百度的页面,(ajax到后台,后台拉取站内搜索推荐内容),百度,就是个坑货。自己说提倡https,然后,周边产品都不支持下,无语……
只有创始人才能执行该操作
网站替换CDN路径,整个数据库40M,所以用phpcms自带的数据库管理工具备份。修改sql文件上传后,提示:只有创始人才能执行该操作!首先,chown -R nginx nginx bakup 修改sql文件为用户归属nginx ,发现没有卵用,chmod -R 777 bakup 还是无效。
然后,心理拔凉拔凉的。原来发现,admin_founders,只要创建的用户才可以操作。而我之前的管理员账户为邮箱。所以,启用最先创建的管理员账户,
update v9_admin set username = xxx where userid=1;
或者,打开文件/caches/configs/system.php,将新添加的帐号的序号写入admin_founders变量的值里,这个变量保存的是网站创始人ID,多个ID逗号分隔。
可以查看《phpcms创建一个隐藏的超级管理员账户》
phpcms 标签在后台管理无效
除了在phpcms/templates/里面的模板里面使用phpcms模板标签(smart语法),其他模板里面无效,比如phpcms/modules/admin/templates。
所以只能用php,但是,比如统计文章总访问量(不想在前台提现),但是phpcms里面的db调用真是个坑货。限于篇幅,看官还是自行google
转载本站文章《phpcms v9站http升级到https加http2遇到到坑》,
请注明出处:https://www.zhoulujun.cn/html/php/phpcms/2018_0608_8120.html