服务器配置更改后,许多后端页面中的... lib / Zend / Date.php(1078)中没有日期部分

时间:2012-09-03 20:00:28

标签: magento-1.5 magento

在我们客户的商店托管公司进行了一些未经报告的更改后,我们在magento日期格式和许多管理屏幕中断(销售订单视图,客户,索引管理等)时遇到很多错误。

在报告文件夹日志中,我得到:

a:5:{i:0;s:44:"No date part in '2012-09-03 19:36:17' found.";i:1;s:6218:"#0 /public_html/sp/lib/Zend/Date.php(1078): Zend_Date->_calculate('set', '2012-09-03 19:3...', 'yyyy-MM-dd HH:m...', 'pt_BR')
#1 /public_html/sp/lib/Zend/Date.php(197): Zend_Date->set('2012-09-03 19:3...', 'yyyy-MM-dd HH:m...', 'pt_BR')
#2 /public_html/sp/app/code/core/Mage/Core/Model/Locale.php(478): Zend_Date->__construct('2012-09-03 19:3...', 'yyyy-MM-dd HH:m...', Object(Zend_Locale))
#3 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.php(81): Mage_Core_Model_Locale->date('2012-09-03 19:3...', 'yyyy-MM-dd HH:m...')
#4 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column.php(128): Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Datetime->render(Object(Mage_Index_Model_Process))
#5 /public_html/sp/app/design/adminhtml/default/casadosaber/template/widget/grid.phtml(161): Mage_Adminhtml_Block_Widget_Grid_Column->getRowField(Object(Mage_Index_Model_Process))
#6 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(235): include('/public_html/s...')
#7 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(266): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#8 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(280): Mage_Core_Block_Template->renderView()
#9 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#10 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(758): Mage_Adminhtml_Block_Template->_toHtml()
#11 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(525): Mage_Core_Block_Abstract->toHtml()
#12 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(476): Mage_Core_Block_Abstract->_getChildHtml('grid', true)
#13 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Container.php(70): Mage_Core_Block_Abstract->getChildHtml('grid')
#14 /public_html/sp/app/design/adminhtml/default/default/template/widget/grid/container.phtml(36): Mage_Adminhtml_Block_Widget_Grid_Container->getGridHtml()
#15 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(235): include('/home/storage/5...')
#16 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(266): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#17 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(280): Mage_Core_Block_Template->renderView()
#18 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#19 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Widget/Container.php(295): Mage_Adminhtml_Block_Template->_toHtml()
#20 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(758): Mage_Adminhtml_Block_Widget_Container->_toHtml()
#21 /public_html/sp/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#22 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(758): Mage_Core_Block_Text_List->_toHtml()
#23 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(525): Mage_Core_Block_Abstract->toHtml()
#24 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(476): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#25 /public_html/sp/app/design/adminhtml/default/default/template/page.phtml(74): Mage_Core_Block_Abstract->getChildHtml('content')
#26 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(235): include('/home/storage/5...')
#27 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(266): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#28 /public_html/sp/app/code/core/Mage/Core/Block/Template.php(280): Mage_Core_Block_Template->renderView()
#29 /public_html/sp/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#30 /public_html/sp/app/code/core/Mage/Core/Block/Abstract.php(758): Mage_Adminhtml_Block_Template->_toHtml()
#31 /public_html/sp/app/code/core/Mage/Core/Model/Layout.php(529): Mage_Core_Block_Abstract->toHtml()
#32 /public_html/sp/app/code/core/Mage/Core/Controller/Varien/Action.php(391): Mage_Core_Model_Layout->getOutput()
#33 /public_html/sp/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(55): Mage_Core_Controller_Varien_Action->renderLayout()
#34 /public_html/sp/app/code/core/Mage/Core/Controller/Varien/Action.php(420): Mage_Index_Adminhtml_ProcessController->listAction()
#35 /public_html/sp/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(253): Mage_Core_Controller_Varien_Action->dispatch('list')
#36 /public_html/sp/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#37 /public_html/sp/app/code/core/Mage/Core/Model/App.php(340): Mage_Core_Controller_Varien_Front->dispatch()
#38 /public_html/sp/app/Mage.php(630): Mage_Core_Model_App->run(Array)
#39 /public_html/sp/index.php(84): Mage::run('', 'store')
#40 {main}";s:3:"url";s:39:"/sp/index.php/cs_mg_admin/process/list/";s:11:"script_name";s:13:"/sp/index.php";s:4:"skin";s:5:"admin";}

在开发环境中,它运行良好,在昨天之前,当托管进行了许多更改时,它也可以在那里工作。

我们使用America / Sao_Paulo作为时区, customer_entity 表中没有客户在created_at或updated_at中使用NULL值, sales_flat_order sales_flat_order_grid tables。

我还尝试更新 eav_attribute 表中的created_at属性以及我在this topic中看到的其他内容。

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:7)

查看上面的转储,您的异常消息是

"No date part in"

如果您搜索Magento代码库,则此异常消息显示的唯一位置是

#File: lib/Zend/Locale/Format.php 
$split = false;
preg_match_all('/\d+/u', $number, $splitted);

if (count($splitted[0]) == 0) {
    iconv_set_encoding('internal_encoding', $oenc);
    #require_once 'Zend/Locale/Exception.php';
    throw new Zend_Locale_Exception("No date part in '$date' found.");
}

在该函数中做了一些研究,我很确定你的服务器上发生了什么pcre_match_all函数在运行以下代码时无法找到任何匹配项(你可以通过调试确认)

preg_match_all('/\d+/u', '2012-09-03 19:36:17', $splitted);

这似乎是不合逻辑的,因为那里有数字被拆分,所以可能发生的事情是某种程度上,无论是通过PHP更改还是MySQL更改,此函数都接收非utf8 编码文本,以及使用/u选项,正则表达式无法正确解析字符串。

如果我正在咨询这个项目,我建议用一些调试代码确认上面的内容(尝试用纯文本运行preg_match_all函数,然后从数据库中提取文本)。然后我会对主机大喊大叫并告诉他们配置他们的应用程序,这样就不会发生。然后,如果这不起作用,我将专注于如何将我的数据库中的所有日期文本转换为当前配置所理解的格式。祝你好运!

答案 1 :(得分:2)

首先,感谢Alan Storm帮助弄清楚它几乎是真正的问题。 我试图从REG EXP中删除“/ u”,但我意识到Magento和Zend Framework在很多地方使用带有/ u的正则表达式,比如核心/字符串帮助器等等。

因此,我使用以下代码制作了PHP,并尝试在两种环境中运行它。

<?php
$number = '2012-08-23 22:15:48';

preg_match_all('/\d+/u', $number, $splitted);

echo "<pre>";
var_dump($splitted);
echo "</pre>";

所以,在有问题的服务器上我收到了警告......

  

警告:preg_match_all()[function.preg-match-all]:编译   失败:未知选项位设置为偏移-1 in   第4行的/.../public_html/test.php   NULL

在网上搜索,我发现这个(phpinfo is reporting incorrect pcre version)简而言之告诉我们验证PCRE版本(在phpinfo()中)。

... SO 所有这个问题都是因为 PCRE lib版本 ...在我的生产环境中太旧了....正在使用 6.6 06-Feb-2006 < / em>而其他人使用 8.xx

答案 2 :(得分:0)

感谢它是因为它和它主要是当一些托管使用安全的PHP与suexec,我不知道那么多,但PCRE有一些冲突