有時候我們在安裝PHPCMS的時候會遇到一個問題,明明我們填寫的數據庫信息都是正確的,可就是會提示“無法連接數據庫服務器,請檢查配置!”,但我們通過PHPMYADMIN可以正常登錄,這是為什么呢?
原來我也很是不解,可為了能夠盡快的安裝完,我也沒有心思去過多的研究,就在測試服務器上先安裝上,然扣再打包上傳至服務器再導入數據庫,挺麻煩的,今天終于找到了 原因.
PHPCMS V9 安裝的第5步是賬號設置,當我們填寫完賬號信息后提交,這時候安裝程序會以通過一個異步調用去檢查配置是否正確,如果你的數據庫密碼是:數字+字母,很好沒有問題可以通過測試,然后繼續下一步安裝.
但是,問題就出現在這里,如果你的密碼里含有 # 、& 等這些在URL中使用的字符,不好意思這里就出錯了,怎么搞就是安裝不上,因為他們在進行測試的時候使用的是這樣的方法:
- <!--
- var errmsg = new Array();
- errmsg[0] = '您已經安裝過Phpcms,系統會自動刪除老數據!是否繼續?';
- errmsg[2] = '無法連接數據庫服務器,請檢查配置!';
- errmsg[3] = '成功連接數據庫,但是指定的數據庫不存在并且無法自動創建,請先通過其他方式建立數據庫!';
- errmsg[6] = '數據庫版本低于Mysql 4.0,無法安裝Phpcms,請升級數據庫版本!';
- function checkdb()
- {
- var url = '?step=dbtest&dbhost='+$('#dbhost').val()+'&dbuser='+$('#dbuser').val()+'&dbpw='+$('#dbpw').val()+'&dbname='+$('#dbname').val()+'&tablepre='+$('#tablepre').val()+'&sid='+Math.random()*5;
- $.get(url, function(data){
- if(data > 1) {
- alert(errmsg[data]);
- return false;
- }
- else if(data == 1 || (data == 0 && confirm(errmsg[0]))) {
- $('#install').submit();
- }
- });
- return false;
- }
- //-->
- $.get(url .....
問題就出現在這里,我們如果密碼中含有#或&會就被$_GET參數錯誤的分隔導致我們的密碼和我們輸入的時候不一致而導致問題的出現,怎么辦的,把這一段代碼換成下面的代碼:
- <!--
- var errmsg = new Array();
- errmsg[0] = '您已經安裝過Phpcms,系統會自動刪除老數據!是否繼續?';
- errmsg[2] = '無法連接數據庫服務器,請檢查配置!';
- errmsg[3] = '成功連接數據庫,但是指定的數據庫不存在并且無法自動創建,請先通過其他方式建立數據庫!';
- errmsg[6] = '數據庫版本低于Mysql 4.0,無法安裝Phpcms,請升級數據庫版本!';
- function checkdb()
- {
- $.ajax(
- {
- type:"POST",
- url: 'install.php',
- data: "step=dbtest&dbhost="+$("#dbhost").val()+"&dbuser="+$('#dbuser').val()+"&dbpw="+$("#dbpw").val()+"&dbname="+$("#dbname").val()+"&tablepre="+$("#tablepre").val()+"&sid="+Math.random()*5,
- success: function(data){
- if(data > 1) {
- alert(errmsg[data]);
- return false;
- }
- else if(data == 1 || (data == 0 && confirm(errmsg[0]))) {
- $('#install').submit();
- }
- }
- }
- );
- return false;
- }
- //-->
改為POST方法,就不會有以上的問題出現.
同樣將install.php中347行改為extract($_POST) 代碼如下:
- //數據庫測試
- case 'dbtest':
- extract($_POST); //要改的就是這里 line 347
- if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
- exit('2'); //Vevb.com
- }
這樣就可以了,或者你直接把密碼改簡單了,回頭再去database.php 中修改也一樣.
寫程序的時候不要這么偷懶了,唉,本來想去官方論壇上寫BUG提交,一來是太麻煩,二來是我提交過的BUG從來沒有被管理員回復過,還不如寫到自己的博客中呢.
新聞熱點
疑難解答