Материал из Joonte Wiki
Версия от 15:06, 4 апреля 2009; Бреславский Антон (обсуждение | вклад)
Содержание
[убрать]Описание
Обнаружена ошибка в связке php 5.2.5+ и libxml 2.6.30+
При обработке XML библиотека не восстанавливает XML сущности вида &entity;
Описание ошибки есть официальном сайте http://bugs.php.net/bug.php?id=45996
Симптомы
Лог ошибок системы (errors.log) содержит следующее:
[MySQL->Query]: SELECT COUNT(*) FROM HostingOrdersOwners WHERE `OrderDate` BEGIN_WEEK() [!] [1024]-[MySQL->Query]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN_WEEK()' at line 1 в линии 123 ...
Сценарий проверки
Для проверки наличия проблем с libxml используйте сценарий:
<? # Joonte Software 2007-2009 # The following PHP script shows libxml bug, which do not restore XML entities. # Solution: rebuild php with libxml-2.6.30. $XML = <<<EOD <XML> <Name>This is a test!</Name> <Bug>[\"] - must be quot</Bug> <Bug>[\>] - must be right arrow</Bug> <Bug>[\<] - must be left arrow</Bug> </XML> EOD; # Creating XML parser $Parser = Xml_Parser_Create('UTF-8'); # Set option Xml_Parser_Set_Option($Parser,XML_OPTION_SKIP_WHITE,TRUE); # Parse XML Xml_Parse_Into_Struct($Parser,$XML,$Stuct,$Indexes); Header('Content-Type: text\plain; charset=UTF-8'); echo "Original XML:\n"; echo HtmlEntities($XML); echo "--\n"; echo "Result of parsing:\n"; print_r($Stuct); ?>
Решение
Откатить libxml до версии 2.6.30 и перекомпилировать PHP.