Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Unable to create XML parser (http://forum.typo3.ru/showthread.php?t=9756)

Alex Podusov 18.10.2011 16:23

Unable to create XML parser
 
При ручном запуске задания в планировщике постоянно вываливалось это сообщение:
Выполнение задачи "Обновить список расширений (em)" потерпело неудачу, сообщение об этом: tx_em_Parser_MirrorXmlPushParser: Unable to create XML parser.
Погуглил, пояндексил, порамблир, нашел только вот такой совет:
Цитата:

При попытке обновить список расширений из репозитория получил такую ошибку: tx_em_Parser_MirrorXmlPushParser: Unable to create XML parser.
Оказалось все просто, мой php был собран без xmlreader. Пересобрал, все заработало нормально.
зашел в админку хостинга (ру-центр), подключил этот самый xmlreader. Перезапустил вебсервер. Теперь при заходе в Планировщик вываливается сразу это:
Цитата:

Fatal error: tx_scheduler_Module::listTasks() [<a href='tx-scheduler-module.listtasks'>tx-scheduler-module.listtasks</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;tx_em_MirrorXmlException&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/.../typo3/typo3_src-4.5.0/typo3/sysext/scheduler/mod1/index.php on line 1153
Пошел снова в управление хостингом, выключил xmlreader, перезапустил веб сервер. Но вот эта последняя ошибка никуда не делась. Что бы это могло быть?

PS
Если закомментировать в указанном файле блок if c 1144 по 1156 строку:
PHP код:

                        // Check if the last run failed
                    
$failureOutput '';
                    if (!empty(
$schedulerRecord['lastexecution_failure'])) {
                            
// Try to get the stored exception object
                        
$exception unserialize($schedulerRecord['lastexecution_failure']);
                            
// If the exception could not be unserialized, issue a default error message
                        
if ($exception === FALSE) {
                            
$failureDetail $GLOBALS['LANG']->getLL('msg.executionFailureDefault');
                        } else {
                            
$failureDetail sprintf($GLOBALS['LANG']->getLL('msg.executionFailureReport'), $exception->getCode(), $exception->getMessage());
                        }
                        
$failureOutput ' <img ' t3lib_iconWorks::skinImg(t3lib_extMgm::extRelPath('scheduler'), 'res/gfx/status_failure.png') . ' alt="' htmlspecialchars($GLOBALS['LANG']->getLL('status.failure')) . '" title="' htmlspecialchars($failureDetail) . '" />';
                    } 

то хотя бы возвращается на место нормальное отображение аддона

ПыСыСы
Оказывается чего тролько прежде не стояло на хостинге: и TYPO3, и CS-Cart, и Джумлу с Магентой пробовали. В результате к PHP подружается такой список: ctype, curl, dom, filter, ftp, gd, hash, iconv, json, mcrypt, mhash, mysql, mysqli, pdo, pdo_mysql, session, simplexml, soap, zip, zlib
а из модулей: auth_module , CGI, realip_module , rewrite_module , autoindex_module , env_module , expires_module , gzip_module , limitipconn_module
Вот такая кашица, а я то порой негодовал - куда память девается??? :) Буду потихонечку по очереди отключать ненужное, проверяя, не приведет ли отключение к неприятностям. Но вот этот опыт с xmlreader всё же настораживает... включил-отключил - и трындец планировщику ))) Может подскажет кто, что из этого списка точно не требуется для TYPO3?

dmartynenko 18.10.2011 20:21

Может все дело в том, что до подключения xmlreader в serialize(lastexecution) сохранилось какой-то объект, который как раз и является "incomplete object".

Вообще по мне так странная практика сохранять серилизованный объект, массив параметров еще понимаю - но (бинарный) объект? Верный путь к ошибкам при обновлении php или его модулей.

PS: А список подключаемых модулей у вас довольно типичен, и даже мал. Например отсутствует часто используемый mbstring.

Андрей Аксенов 19.10.2011 19:34

У меня на nic.ru на тарифе 200 список в php.ini такой:
PHP код:

extension=curl.so
extension
=filter.so
extension
=gd_ext.so
extension
=json.so
extension
=mbstring.so
extension
=mysql.so
extension
=session.so
extension
=soap.so
extension
=zlib.so
extension
=imagick.so
extension
=simplexml.so
Аутентификация RSA
extension
=openssl.so
extension
=xmlreader.so
extension
=ftp.so
extension
=dom.so 

Все вроде без ошибок работает...

Alex Podusov 20.10.2011 00:26

тоже 200 тариф. ну да, от модулей тут действительно проблема может быть лишь одна - отъедание доли памяти. А вот перед установкой xmlreader действительно запускал обновление списка расширений, которое завершилось неудачей. Ведь надо же, всегда перед какими либо серьезными манипуляциями бэкапил базу и файлы, а тут промахнулся, и на те ) благо только начал переделывать сайт, немного наваял. особо копаться времени нет, проще будет снова с нуля переставить за день. Вспомню молодость, когда день без переустановки винды считался прожитым зря )))

ЗЫ
Короче вот, пошел в phpmyadmin и в таблице tx_scheduler_task удалил строку с незавершенной задачей. Все пришло в норму :)


Часовой пояс GMT +4, время: 21:34.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot