4

顧客のストアホスティング会社によって報告されていない変更が行われた後、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テーブルにもありません。

また、 eav_attributeテーブルのcreated_at属性や、このトピックで見たその他のものを更新しようとしました。

誰かがこれを手伝うことができますか?

4

3 に答える 3

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プレーンテキストで関数を実行してから、データベースから取得したテキストで実行してみてください)。それから私はホストに怒鳴り、これが起こらないように彼らのアプリケーションを設定するように彼らに言いました。次に、それが機能しない場合は、データベース内のすべての日付テキストを現在の構成で理解できる形式に変換する方法に集中します。幸運を!

于 2012-09-03T21:08:10.313 に答える
2

まず、ほぼ現実的な問題を理解するのに役立ったAlanStormに感謝します。そのREGEXPから「/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]:コンパイルに失敗しました:不明なオプションビットが4行目の/.../public_html/test.phpのオフセット-1に設定されていますNULL

Webで検索したところ、これ(phpinfoは誤ったpcreバージョンを報告しています)を見つけました。一言で言えば、PCREバージョン(phpinfo())を確認するように指示されています。

したがって、この問題はすべて、PCRElibバージョンが...本番環境では古すぎるためです.... 6.6 06-Feb-2006を使用しているのに対し、他のバージョンは8.xxを使用しています。

于 2012-09-05T20:08:48.953 に答える
0

そのおかげで、ほとんどの場合、ホスティングがsuexecで安全なphpを使用していて、私はそれについてあまり知りませんが、PCREの競合があります。

于 2013-11-29T21:25:34.300 に答える