XML/XSLT parser error, not well-formed (invalid token) Windows XP + IIS or Apache

Pavel A

Новичок
XML/XSLT parser error, not well-formed (invalid token) Windows XP + IIS or Apache

Здавствуйте уважаемые форумчане,
Подскажите пожалуйста, в чем может быть проблема.
Ситуация такова:
XML фомируется и передается как текстовая переменная (содержит неприличные символы, не знаю откуда заказчик их взял, данные из базы MSSQL) в xslt_process (PHP4.3.9||11), что вызывает
Cannot process XSLT document [2]: XML parser error 4: not well-formed (invalid token).
Но только под Апачем+winXPPro. На этом же компе но под IIS все в порядке и причем везде...
Рядом стоит Win Server 2003+apache все зашибись, у заказчика Win2K server +apache та же проблема.
Скопировал php.ini & httpd.conf с Win Server 2003, не помогло, играл с юзерами и локалью для апача, тоже не помогло.

Куда смотреть? Где еще можно покопаться?
Заранее Спасибо.
 

slach

Новичок
смотреть надо в сторону iconv и версии sablotron

xslt_proccess - ф-ция из расширения php_xslt.dll
которое в свою очередь требует
iconv.dll
sablot.dll
libexpat.dll
и т.п.

скачай и скопируй в system32 все *.dll и *.exe из пакетов
http://download-1.gingerall.cz/download/sablot/Sablot-Win-1.0.2-FullPack.zip
и
libexpat.dll туда же в system32

http://sourceforge.net/project/showfiles.php?group_id=10127&package_id=11277


кроме того
выведи содерижмое XML и XSL в файлы
и проведи трансформацию в ручную через
sabcmd.exe
чтобы лучше понять в чем ошибка
 

Pavel A

Новичок
Спасибо, ситуация разрешилась очень просто, оказывается PHP sapi через IIS и Apache обращаются по разному с MSSQL. В случае с Apache используется DBLib и нужно было просто отключить Automatic convert ANSI to OEM in Client Network Utility. Эту особенность знал, но сразу туда не полез, так как был уверен что Apache & IIS & PHP sapi работают одинаково и зачем лезть раз под IIS все работает. А когда полез был очень удивлен :(
 

slach

Новичок
ухты... а где это отключается, подробнее не расскажете ??
просто люди на форуме по MSSQL очень часто на кодировки жалуются, похоже вы более или менее внятно нашли причину...

что такое DBLib? что за DLL??
как именно отключать, где ??
не будет ли у вас получаса, чтобы написать пошаговый HOWTO?
 

Pavel A

Новичок
К сожаленю детально разбираться "С чего это оно вдруг?" нет времени. Надеюсь это может помочь:

Смотри 'Client Network Utility' там же где и Query Analizer.
Другими словами Start->All Programms->Microsoft Sql Server->'Client Network Utility'.
Думаю этот screenshot поможет:
http://www.alexeevy.ru/forPhpClub.gif

Еще одна странность:
Заметил несуразность только после того когда IIS отказался работать с MSSQL через TCP/IP и работал только через Named Pipes. (see General tab in 'Client Network Utility' for details)
Только после этого удосужился глянуть в настройки MSSQL клиента.
 
Сверху