magento 1.6.1.0 錯誤一例

今天有個朋友說安裝了Magento之後,無法登陸,檢查了一遍設置,都沒問題,最後想了一遍,決定從程序入手來排查。

先說一下錯誤提示:


Exception printing is disabled by default for security reasons.
Error log record number: XXXXXXXXXXXXXXX

這是什麼錯誤呢?這個提示只會給人一頭霧水。先把Magento的錯誤提示打開吧。

找到:


/errors/local .xml.sample

把這個文件重命名爲:local.xml

然後在網站根目錄下建立一個文件目錄 tmp ,接着找到


. /lib/Zend/Cache/Backend/File .php

查找代碼:


protected $_options array('cache_dir' => 'null',

修改爲:

protected $_options array (
'cache_dir' => 'tmp/' ,

保存文件,然後刷新網站首頁,錯誤就顯示出來了:

Illegal scheme supplied, only alphanumeric characters are permitted
Trace:
#0 /home/artsandc/public_html/app/code/core/Mage/Core/Model/Store.php(712): Zend_Uri::factory(’{{base_url}}’)
#1 /home/artsandc/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(313): Mage_Core_Model_Store->isCurrentlySecure()
#2 /home/artsandc/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(161): Mage_Core_Controller_Varien_Front->_checkBaseUrl(Object(Mage_Core_Controller_Request_Http))
#3 /home/artsandc/public_html/app/code/core/Mage/Core/Model/App.php(349): Mage_Core_Controller_Varien_Front->dispatch()
#4 /home/artsandc/public_html/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#5 /home/artsandc/public_html/index.php(80): Mage::run(’’, ‘store’)
#6 {main}

這個錯誤根據社區的討論,好像是1.6.0之後的版本出現的。具體可以參考社區論壇的討論貼:

http://www.magentocommerce.com/boards/viewthread/263751/

主要產生的原因:

問題主要出在:{{base_url}} 這個參數上,如果填入的域名是類似localhost之類域名,中間沒有用點號分隔開的話,產生錯誤的機會極大。而產生錯誤的文件爲 /app/code/core/Mage/Core/Model/Store.php

在 1.6.0.0的版本中, $secureBaseUrl是一個空值,但是在 1.6.1.0 的版本中則爲數據庫中的一個值。如果數據庫中你有設置‘{{base_url}}’,那麼$secureBaseUrl 就會被賦予 ‘{{base_url}}’. 而這個值恰恰會導致函數:

Zend_Uri::factory( $secureBaseUrl );

產生錯誤,然後導致中斷退出。

以下是兩種解決方法:

1、Dan Jones 提供的解決方法:

dan jones寫了一個擴展補丁包,可以下載到網站根目錄下,解壓即可,下載地址:

http://www.danneh.org/files/24

本地:BTS_1610Fix.tar

這個方法本機測試無效。

2、Jefferson Luís 提供的解決方法

打開:

./app/code/core/Mage/Core/Model/Store.php

找到712行:

$uri = Zend_Uri::factory( $secureBaseUrl );
$port $uri ->getPort();

在這行之前,插入以下代碼:

// this solution is offer by 7ENET.COM TechTeam
if (false !== strpos ( $secureBaseUrl '{{base_url}}' )) {
$secureBaseUrl = Mage::getConfig()->substDistroServerVars( '{{base_url}}' );
}
//end of custom code.

這個方法本機測試有效,加入之後,刷新首頁,一起就都正常了。

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章