PDA

Просмотр полной версии : Unable to create XML parser


Alex Podusov
18.10.2011, 16:23
При ручном запуске задания в планировщике постоянно вываливалось это сообщение:
Выполнение задачи "Обновить список расширений (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 строку: // 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 такой:
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 удалил строку с незавершенной задачей. Все пришло в норму :)