【问题标题】:Magento admin category page fails on PHP 5.4Magento 管理类别页面在 PHP 5.4 上失败
【发布时间】:2012-04-28 07:04:58
【问题描述】:

我在 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 在 cmets 中的建议,我试图追踪错误的来源,但我不得不承认我并不真正了解我得到的结果。类别页面的 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?
  • 完全没有。在我意识到这是 5.4 的错误之前,我已经从头开始重新安装了该站点,并且甚至没有生成日志文件。我相信 Apache 日志会告诉你这个故事,只要我被允许查看它。
  • 该死,我唯一能想到的就是把 Mage::Log 调用放进去,这样你就可以看到它掉在哪里了
  • 联系主机并让他们将日志发送给您
  • @Anton - 我试过了,得到一个关于使用一些不起作用的自定义错误处理代码的预设回复。

标签: php magento magento-1.6


【解决方案1】:

我在使用 Magento 1.7 和 PHP 5.4 的 Google Chrome 和 Apple Safari 中的 OSX Lion 下遇到了同样的问题。突然 Magento 类别管理员开始给出 500 个错误,我不知道发生了什么。看来这是 PHP 5.4 的问题。起初我以为是 XDebug 导致了这个错误。然后我禁用了XDebug,问题仍然存在。它可以与 Firefox 一起使用,更奇怪的是它!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多