Я использую Windows XP с предварительно скомпилированными двоичными файлами PHP, доступными по windows.php.net .Я обновил PHP 5.2.5 до PHP 5.2.16, и теперь xsl:include
в некоторых моих таблицах стилей перестали работать.Проверяя каждую версию подряд, я обнаружил, что она работала до версии 5.2.8 и не работает в версии 5.2.9+.Теперь я получаю следующие три ошибки для каждого xsl:include
.
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: I/O warning : failed to load external entity "file%3A/C%3A/path/to/included/stylesheet.xsl" in ... on line 227
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file%3A//C%3A/path/to/included/stylesheet.xsl line 36 element include in ... on line 227
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsl:include : unable to load file%3A/C%3A/path/to/included/stylesheet.xsl in ... on line 227
Я предполагаю, что это потому, что он не может найти указанный файл.Многие из включений находятся в том же каталоге, что и преобразуемая таблица стилей, и не имеют каталога в пути, то есть <xsl:include href="fileInSameDir.xsl">
.Интересно, что в первой и третьей ошибках отображается протокол file: // с одной косой чертой вместо правильных двух.Я предполагаю, что это проблема.(Когда я жестко кодирую полный путь с помощью «file: /», это не получается, но когда я жестко кодирую полный путь с помощью «file: //», это работает.) Но что может вызвать это?Ошибка в libxslt / libxml?Я также обнаружил очевидное несоответствие версии между libxml и версией libxml, против которой была скомпилирована libxslt.
5.2.5
libxml Version => 2.6.26
libxslt, скомпилированной с версией libxml=> 2.6.26
5.2.8
libxml Version => 2.6.32
libxslt, скомпилированный с libxml Version => 2.6.32
=== itперерывы в версиях, начиная с 5.2.9 ===
5.2.9
libxml Version => 2.7.3
libxslt, скомпилированных с libxml Version => 2.6.32
5.2.16
libxml Version => 2.7.7
libxslt, скомпилированный с libxml Version => 2.6.32
Вплоть до PHP 5.2.9 libxslt был скомпилирован с той же версией libxml, которая была включенас PHP.Но начиная с PHP 5.2.9, libxslt был скомпилирован с более старой версией libxml, чем та, которая была включена в PHP. Это проблема с распределенными двоичными файлами или просто совпадение?
Чтобы проверить это, я предполагаю, что PHP может быть собран с различными версиями libxml / libxslt, чтобы увидеть, какие комбинации работают или нетт.К сожалению, я не принадлежу к своему элементу в мире Windows, и создание PHP на Windows кажется мне надуманным.
К сожалению, до сих пор я не смог воспроизвести эту проблему на примере вне моего приложения,поэтому я изо всех сил стараюсь сузить его и не могу отправить конкретную ошибку.
Итак, как вы думаете, это вызвано
- проблемой несоответствия версий в распределенных двоичных файлах?
- ошибка, введенная в PHP 5.2.9?
- ошибка, введенная в libxml 2.7?
- что-то еще?
Яозадачен.Любые мысли, которые могут направить меня в правильном направлении, с благодарностью.Спасибо.