Как включить функции XSLT в PHP 5?

Я хочу распечатать xml-файл в виде вложенного списка HTML с помощью xslt, и, насколько я знаю, код верен, однако я получаю эту ошибку

Неустранимая ошибка: вызов неопределенной функции xslt_create ()

Я полагаю, что функции xslt не были включены. Как включить эти функции в PHP? Есть ли файл php, который мне нужно включить (например, как работают библиотеки Javascript), или это что-то более сложное? Я принимаю участие в MediaTemple.

Вот код php, который я использую:

<?php // Allocate a new XSLT processor $xh = xslt_create(); // Process the document, returning the result into the $result variable $result = xslt_process($xh, 'armstrong.xml', 'familyToNestedList.xsl'); if ($result) { print "SUCCESS, sample.xml was transformed by sample.xsl into the \$result"; print " variable, the \$result variable has the following contents\n<br>\n"; print "<pre>\n"; print $result; print "</pre>\n"; } else { print "Sorry, sample.xml could not be transformed by sample.xsl into"; print " the \$result variable the reason is that " . xslt_error($xh) . print " and the error code is " . xslt_errno($xh); } xslt_free($xh); ?> 

Заранее спасибо!

Вы должны скомпилировать PHP с его поддержкой и обязательно иметь все необходимые зависимости. См. Соответствующие главы в Руководстве по PHP для XSLT .

Из раздела Требования

Для этого расширения требуется расширение libxml PHP. Это означает, что также требуется передать inenable-libxml, хотя это неявно выполняется, потому что libxml включен по умолчанию. Это расширение использует Sablotron и expat, которые можно найти на странице http://freshmeat.net/projects/sablotron/ . Также предоставляются бинарники, а также источник. Включить с помощью параметра –with-xslt с PHP 4.

Из раздела Установка

В Unix запустите configure с параметрами –enable-xslt –with-xslt-sablot. Библиотека Sablotron должна быть установлена ​​где-то ваш компилятор может ее найти. Убедитесь, что у вас есть те же библиотеки, которые связаны с библиотекой Sablotron, как те, которые связаны с PHP. Параметры конфигурации: –with-expat-dir = DIR –with-iconv-dir = DIR, чтобы помочь вам указать их. При запросе поддержки всегда указывайте эти директивы и есть ли где-то другие версии этих библиотек, установленные в вашей системе. Естественно, укажите все номера версий.

Рекомендуемым расширением для использования XSL-преобразований с PHP5 является XSL . Если все, что вам нужно сделать, это преобразовать два документа, как показано в вашем примере, рассмотрим этот пример из руководства PHP:

 $xml = new DOMDocument; $xml->load('collection.xml'); $xsl = new DOMDocument; $xsl->load('collection.xsl'); // Configure the transformer $proc = new XSLTProcessor; $proc->importStyleSheet($xsl); // attach the xsl rules echo $proc->transformToXML($xml); 

Метод transformToXML возвращает преобразованный документ или FALSE , поэтому вы можете сохранить if / else из своего кода. В любом случае для обновления кода должно быть тривиально.

В зависимости от вашего дистрибутива Linux вы можете просто установить модуль php5-xsl, добавить строку «extension = php_xsl.so» в файл php.ini и перезапустить сервер apache2.

Это сработало для меня на Ubuntu 11.10. Вы можете ввести «sudo apt-get install php5-xsl» в командную строку для установки php5-xml.

Ну, очень просто, но на php.net его можно объяснить более четко.

Я использую один контейнер докеров, содержащий базу ubuntu и использую php-fpm.

Шаги по установке этого расширения в моем контексте:

Первый поиск расширения xsl в репозитории linux apt-cache search xsl

Я закончил поиск php5-xsl, поэтому он установил только install apt-get install php5-xsl

что процесс установки настроек конфигурации уже добавлен, если этого не произойдет, просто сделайте сам vim /etc/php5/mods-available/xsl.ini

вставьте этот контент: extension = xsl.so

(очевидно, что пути соответствуют вашим настройкам конфигурации php, но мой пример – это конфигурация по умолчанию)

Перезапустите php fpm и закончите!