我有一個Magento 1.6.2站點託管在1 & 1.由於某些安裝的擴展,我必須支持PHP 5.3版本,但遺憾的是可用的選項是PHP 1 & 1 5.2或者他們稱之爲PHP Dev的東西。快速phpinfo()
表明,這實際上是PHP 5.4。Magento管理員類別頁面在PHP 5.4上失敗
我的問題是,當我設置爲5.4時,後端的類別頁面會引發500錯誤。回滾到5.2可以解決問題,但這會打破我的產品頁面。在短期內,我可以處理它們之間的交換,但是當網站交給客戶時,這對於長期解決方案顯然是不可接受的。
任何人都可以提出這種不兼容性可能在哪裏,以及我可能採取什麼步驟來解決它?我最大的障礙是託管在共享服務器上,所以我不允許查看Apache日誌。
更新:
按CCBlackburn的在評論中建議,我試圖跟蹤誤差從起源點,但我不得不承認,我真的不明白,結果我獲得。類別頁面的URL看起來是這樣的:
example.com/index.php/admin/catalog_category/index/key/blahblah
我推測Mage_Adminhtml_CatalogController
將開始尋找的地方,而是一個Mage::log()
呼叫在indexAction()
第一線未能寫入日誌。
我決定搬家了繼承和切入的構造,因此增加了以下到Mage_Adminhtml_Controller_Action
:
function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) {
Mage::log('construct pre');
parent::__construct($request,$response,$invokeArgs);
Mage::log('construct post');
}
這是更好,因爲第一個日誌調用寫信給該文件,但第二個做不。
接下來,我又感動了繼承和修改的Mage_Core_Controller_Varien_Action
構造如下:
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())
{
Mage::log('request: '.$request);
$this->_request = $request;
Mage::log('response: '.$response);
$this->_response= $response;
Mage::log('pre set action');
Mage::app()->getFrontController()->setAction($this);
Mage::log('post set action');
$this->_construct();
}
的問題是,沒有這些日誌調用的做任何事情。這讓我很難過,因爲肯定從Mage_Adminhtml_Controller_Action
中調用parent::__construct();
應該在執行任何操作之前至少再執行一次日誌調用。除非傳入值存在問題,但我不知道如何檢查/調試?
在Magento日誌中是否顯示任何錯誤 - system.log或exception.log? – CCBlackburn 2012-04-16 23:26:10
根本沒有。在我意識到這是5.4的錯誤之前,我從頭開始重新安裝了該站點,並且甚至從未生成日誌文件。我確信Apache日誌會告訴我這個故事,只要我允許我看看它。 – shanethehat 2012-04-16 23:43:28
Darn,我能想到的唯一的事情就是把Mage :: Log調用放在裏面,這樣你就可以看到它落在 – CCBlackburn 2012-04-17 04:46:33