在PHP 5.4上,Magento管理类别页面失败
我有一个Magento 1.6.2站点托管在1和1上。由于某些已安装的扩展,我必须支持PHP版本5.3,但遗憾的是,1和1的可用选项是PHP5.2或他们称之为PHPDev的东西。快速在PHP 5.4上,Magento管理类别页面失败,php,magento,magento-1.6,Php,Magento,Magento 1.6,我有一个Magento 1.6.2站点托管在1和1上。由于某些已安装的扩展,我必须支持PHP版本5.3,但遗憾的是,1和1的可用选项是PHP5.2或他们称之为PHPDev的东西。快速phpinfo()表明这实际上是PHP5.4 我的问题是,当我设置为5.4时,后端的Categories页面会抛出一个500错误。回滚到5.2解决了这个问题,但这打破了我的产品页面。在短期内,我可以处理他们之间的交换,但这显然是不可接受的长期解决方案,当网站交给客户 有谁能建议这种不兼容可能存在于何处,以及我可以采取
phpinfo()
表明这实际上是PHP5.4
我的问题是,当我设置为5.4时,后端的Categories页面会抛出一个500错误。回滚到5.2解决了这个问题,但这打破了我的产品页面。在短期内,我可以处理他们之间的交换,但这显然是不可接受的长期解决方案,当网站交给客户
有谁能建议这种不兼容可能存在于何处,以及我可以采取哪些步骤来修复它?我最大的障碍是主机位于共享服务器上,因此不允许我查看Apache日志
更新:
根据CCBlackburn在评论中的建议,我试图追踪错误的来源,但我必须承认我并不真正理解我得到的结果。类别页面的URL如下所示:
example.com/index.php/admin/catalog\u category/index/key/blahblah
我假设Mage\u Adminhtml\u CatalogController
将是开始查找的地方,但是Mage::log()
调用作为indexAction()
中的第一行无法写入日志
我决定向上移动继承并切入构造函数,因此将以下内容添加到Mage\u Adminhtml\u Controller\u 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\u Core\u Controller\u Varien\u 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::\uu construct()在执行任何操作之前,来自Mage\u Adminhtml\u Controller\u Action
的code>应至少执行一个日志调用。除非传入值存在问题,但我不知道如何检查/调试它?在谷歌Chrome中的OSX Lion和使用Magento 1.7和PHP 5.4的Apple Safari中,我遇到了同样的问题。突然,Magento分类管理员开始给出500个错误,我不知道发生了什么。这似乎是PHP5.4的一个问题。起初我认为是XDebug导致了这个错误。然后我禁用了XDebug,问题仍然存在。它与Firefox一起工作,这比奇怪更奇怪
我的解决方案是降级到最新的PHP5.3,但是从PHP5.4.3开始,这个问题已经得到了修复在Magento日志-system.log或exception.log中是否显示了任何错误?一点也没有。在我意识到这是5.4的错误之前,我已经从头开始重新安装了该站点,而且日志文件甚至从未生成过。我敢肯定,如果我被允许查看Apache日志的话,它一定会告诉你事情的真相。该死,我唯一能想到的就是把Mage::log调用放进去,这样你就可以看到它在哪里过度联系主机,并让他们向你发送消息logs@Anton-我试过了,得到了一个关于使用一些自定义错误处理代码但不起作用的固定响应。