Материал из Joonte Wiki
(Новая: = Описание = Обнаружена ошибка в связке php 5.2.5+ и libxml 2.6.30+ При обработке XML библиотека не восстанавливае...) |
Alex Keda (обсуждение | вклад) (→Решение) |
||
(не показано 5 промежуточных версий 1 участника) | |||
Строка 4: | Строка 4: | ||
При обработке XML библиотека не восстанавливает XML сущности вида &entity; | При обработке XML библиотека не восстанавливает XML сущности вида &entity; | ||
− | Описание ошибки есть официальном сайте http://bugs.php.net/bug.php?id=45996 | + | Описание ошибки есть на официальном сайте PHP http://bugs.php.net/bug.php?id=45996 |
= Симптомы = | = Симптомы = | ||
Строка 21: | Строка 21: | ||
# Joonte Software 2007-2009 | # Joonte Software 2007-2009 | ||
− | # The following PHP script shows libxml bug, which do not restore | + | # The following PHP script shows libxml bug, which do not restore XML entities. |
# Solution: rebuild php with libxml-2.6.30. | # Solution: rebuild php with libxml-2.6.30. | ||
Строка 27: | Строка 27: | ||
<XML> | <XML> | ||
<Name>This is a test!</Name> | <Name>This is a test!</Name> | ||
− | <Bug>["] - must be quot</Bug> | + | <Bug>[&quot;] - must be quot</Bug> |
− | <Bug>[>] - must be right arrow</Bug> | + | <Bug>[&gt;] - must be right arrow</Bug> |
− | <Bug>[<] - must be left arrow</Bug> | + | <Bug>[&lt;] - must be left arrow</Bug> |
</XML> | </XML> | ||
EOD; | EOD; | ||
Строка 50: | Строка 50: | ||
?> | ?> | ||
+ | </pre> | ||
= Решение = | = Решение = | ||
Откатить libxml до версии 2.6.30 и перекомпилировать PHP. | Откатить libxml до версии 2.6.30 и перекомпилировать PHP. | ||
− | + | ||
+ | |||
+ | = Обновление, от 2011-11-21 = | ||
+ | |||
+ | на последних версиях софта, всё ровно | ||
+ | |||
+ | Оттестировано на libxml2-2.7.8 && php52-5.2.17_4 && FreeBSD 8.2 |
Текущая версия на 12:50, 21 ноября 2011
Описание
Обнаружена ошибка в связке php 5.2.5+ и libxml 2.6.30+
При обработке XML библиотека не восстанавливает XML сущности вида &entity;
Описание ошибки есть на официальном сайте PHP 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.
Обновление, от 2011-11-21
на последних версиях софта, всё ровно
Оттестировано на libxml2-2.7.8 && php52-5.2.17_4 && FreeBSD 8.2