• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

неработает Libxml

  • Автор темы s10
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

s10

двс

запутался в мануале и немогу разобраться с установкой.

у меня php 5.0.4 под win
в моей книжке написано вот что : $dom = domxml_new_doc('1.0');
php на это отвечает : Call to undefined function domxml_new_doc()

что надо мне сделать для того что бы функция работала ?

phpinfo пишет что libxml(2.6.11) у меня есть и она active.

в мануале написано что :

Это расширение PECL не поставляется вместе с PHP.
Дополнительная информация, такая как новый версии,
скачивание, исходные файлы, информация о
разработчике и CHANGELOG, могут быть
найдены здесь: .

скачать - file not found

далее в мануале написано что (насколько я понял) для работы
с xml надо сделать библиотеку доступной в систем пасе. и вот её имя :
For PHP <= 4.2.0, it's libxml2.dll. For PHP >= 4.3.0, it's iconv.dll

и самое главное :
And as of PHP 5.0.0, iconv is compiled
into your Windows PHP binaries by
default so no extra DLL is needed.

возможно у меня банан в глазу -
но руки у меня растут из правильного места.
 
S

Shtogrin

Для windows можно брать отсюда
 
S

s10

2 shtogrin
ага. спасиба. теперь она создает объект.

продолжаю. дальше делаю так :

Код:
 $dom = domxml_new_doc("1.0");
$node = $dom->create_element("book");
var_dump($node);

результат - null.

при передаче $node в $dom->append_child($node);
пишет :
append_child() expects parameter 1 to be object, null given

т.е. create_element() не создает элемент ? что у меня опять неправильно ?

з.ы.
а правильно ли я поступаю вообще ? может существует другой способ генерации xml ?
я проста тока недавна начал этим заниматься. в общеобразовательных целях.

спасибо.
 
A

Andrew Stephanoff

в 5 php есть объект DOM, лучше работать с ним, т. к. он несовместим с libxml.dll
 
S

s10

2 Andrew Stephanoff
вы уж простите - но теперь я уже точно ничего не понял... :D

вот почему один дядя пишет вот так

и при этом у него все работает, а у меня нет ?
мот уже мне пора как у него комменты на немецком писать. :D


у меня в кнжке рассматривается аналогичный пример генерации xml при помощи dom

Код:
 $dom = domxml_new_doc("1.0");
$book = $dom->append_child($dom->create_element("book"));
$title  = $book->append_child($dom->create_element("title"));
....

или мот приведите пример работы с xml(анализа и генерации xml документов), тока не руками типа цикла по массиву элементов и вывода их принтом, так я тоже умею.

спасибо.
 
A

Andrew Stephanoff

Господи...

Замечание: This extension is no longer marked experimental. It will, however, never be released with PHP 5, and will only be distributed with PHP 4. If you need DOM XML support with PHP 5 you can use the DOM extension. This domxml extension is not compatible with the DOM extension.
 
A

Andrew Stephanoff

Для интереса зашел на и что я там увидел:
This extension allows you to operate on an XML document with the DOM API. It has been superseded by the DOM extension that ships with PHP 5.

Although it should be possible to use this old domxml extension with PHP 5, its use is highly discouraged, as there a very high potential for conflicts with the new dom extension.

If you are migrating from PHP 4 to PHP 5, the recommended best-practice is to port your domxml code to the much better dom code.

If you really must build domxml, you will need to obtain the sources from CVS and build them yourself.

See for instructions.

NOTE: if you're running PHP 4.x, the domxml is already part of the distribution.
Так говоришь, мануал читал? :unsure:
 
S

s10

двс

2 Andrew Stephanoff
ага. читал. опять читал. значицца дом говоришь.
т.е. то что вот , это корректно только для пхп 4 ? я правильно понял ?

а как с ним работать (с домом).
вот код из мануала :unsure:
Код:
<?php

$doc = new DOMDocument;

$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);

echo $doc->saveXML();
?>

результат :
Код:
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given in C:\s10\xml\test2.php on line 3

Fatal error: Call to undefined method domdocument::createElement() in C:\s10\xml\test2.php on line 5
это пример кода из DOMNode->appendChild()


а при чем тут вот .
(в частности "Как поставить php5 DOM и XSL под win32")
Качать библиотеки и складывать их в system32, что бы "встроенный dom" работал ?

спасибо.
 
S

s10

если призвать конструктор без параметров то вот что
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given in ...
если передать только версию

Код:
<?php
$dom = new DOMDocument('1.0');
?>

то вот что
Warning: domdocument::domdocument() [function.domdocument]: Entity: line 1: parser error : Start tag expected, '<' not found in...

Warning: domdocument::domdocument() [function.domdocument]: 1.0 in

Warning: domdocument::domdocument() [function.domdocument]: ^ in
если делать так (кстати тоже из мануала, в описании конструктора Domdocument)
Код:
<?php
$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML(); 
?>

то вот что

Warning: domdocument::domdocument() expects parameter 2 to be long, string given in ...
Fatal error: Call to undefined method domdocument::saveXML() in ...

я знаю что ошибка у меня. и что это я что то не доделал. но я уже незнаю куда смотреть.
прошу помощи. и терпения :rolleyes:
спасибо.
 
A

Andrew Stephanoff

удали php и заново поставь :rolleyes: походу ты с копированием библиотек намудрил
у меня просто никогда такого не было (может у тебя как раз конфликт DOM и domxml?)
 
S

s10

2 Andrew Stephanoff

ты прав. конфликт старого и нового "домов"

достаточно в php.ini сделать так
и в коде вот так (я думаю firefox поднимал страницу из кэша)
Код:
<?php
header('Expires: Mon, 23 May 1995 02:00:00 GMT');

$doc = new DOMDocument('1.0','iso-8859-1');
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);

echo $doc->saveXML();
?>
и воуля, чистенький мой xml !!!
Код:
<?xml version="1.0" encoding="iso-8859-1"?>
<para/>

прошу простить за весь флуд.
просто немного запутался.
теперь все работает.
спасибо.
 
M

malor

Что такое 'part elements' в предложении "One XML document may use part elements to describe parts of books, another may use part elements to describe parts of cars. " ?
 
M

MajestiC

Я вообще использую библиотеку и не парюсь насчет проблем с dllками и т.д.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!