PHP 5.4上的Magento管理员类别页面失败

时间:2012-04-16 22:50:27

标签: php magento magento-1.6

我在1& 1上托管了Magento 1.6.2网站。由于某些已安装的扩展,我必须支持PHP版本5.3,但遗憾的是1& 1的可用选项是PHP 5.2或者他们称之为PHP Dev的东西。快速phpinfo()表明这实际上是PHP 5.4。

我的问题是,当我设置为5.4时,后端的Categories页面会抛出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();
}

问题是这些日志调用都没有做任何事情。这让我感到困惑,因为从parent::__construct();调用Mage_Adminhtml_Controller_Action肯定会在执行任何操作之前执行至少一次日志调用。除非输入值存在问题,但我不知道如何检查/调试它?

1 个答案:

答案 0 :(得分:1)

我在Google Chrome中使用OSX Lion和使用Magento 1.7和PHP 5.4的Apple Safari遇到了同样的问题。突然Magento类别管理员开始提供500个错误,我不知道发生了什么。这似乎是PHP 5.4的一个问题。起初我以为是XDebug引起了这个错误。然后我禁用了XDebug,问题仍然存在。与Firefox一起工作比奇怪更奇怪!

我的解决方案是降级到最新的PHP 5.3,但是从PHP 5.4.3 开始,现在已经修复了。