home > php > phpcms >

phpcms v9站http升級到https加http2遇到到坑

Author:zhoulujun Date:

本站現在遷移到騰訊云,升級http2和加httpsnginx配置方面到坑,已經寫了一篇:網站遷移云服務器血淚記—phpcms小站遷移然后發現后臺,很多地

本站現在遷移到騰訊云,升級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.qsexmk.tw/zhoulujun/文章目錄  

改版后是這樣的:www.qsexmk.tw/文章目錄  

因為在我的主域名下還有其它項目,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', 'http://www.qsexmk.tw/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遇到到坑》,
請注明出處:http://www.qsexmk.tw/html/php/phpcms/2018_0608_8120.html