ФорумПрограммированиеPHP для идиотовРасширения PHP → проблемы с php_domxml.dll и php 5

проблемы с php_domxml.dll и php 5

  • skyman000

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 3 мая 2008 г. 8:51

    !привет всем!
    проблема в следующем:
    мне надо чтоб у меня просто работала 1 функция

    function wm_X9Req(){
    global $wmType, $wmWMID;

    $reqID = wm_ReqID();
    $doc = domxml_new_doc('1.0');
    $root = $doc->create_element('w3s.request');
    $root = $doc->append_child('root');
    $tmp = $doc->create_element('reqn');
    $tmp->set_content($reqID);
    $root->append_child($tmp);
    $tmp = $doc->create_element('wmid');
    $tmp->set_content($wmWMID);
    $root->append_child($tmp);

    if($wmType=='classic'){
    $tmp = $doc->create_element('sign');
    $tmp->set_content(wm_GetSign($wmWMID.$reqID));
    $root->append_child($tmp);
    $addr = 'XMLPurses.asp';
    } else {
    $addr = 'XMLPursesCert.asp';
    };

    $getpurses = $doc->create_element('getpurses');
    $root->append_child($getpurses);
    $tmp = $doc->create_element('wmid');
    $tmp->set_content($wmWMID);
    $getpurses->append_child($tmp);

    $request = $doc->dump_mem(TRUE);

    $result = wm_xmlHttpsReq($addr, $request);

    $xml_parser = xml_parser_create('UTF-8');
    xml_parse_into_struct($xml_parser, $result, $vals, $index);
    xml_parser_free($xml_parser);

    $check = wm_CheckResp($vals,$index);
    if( $check != 0) die($check);

    $purses = array();
    $pursename = '';
    $amount = '';
    $desc = '';
    for($n = 0; $n < count($vals); ++$n){
    $e = $vals[$n];
    switch ($e['tag']){
    case 'PURSE':
    switch ($e['type']){
    case 'open':
    $pursename = ''; $amount = ''; $desc = '';
    break;
    case 'close':
    $purses[$pursename] = array('amount' => $amount,

    'desc' => $desc);
    break;
    }
    break;
    case 'PURSENAME':
    $pursename = $e['value'];
    break;
    case 'AMOUNT':
    $amount = $e['value'];
    break;
    case 'DESC':



    вначале пытался её запустить без php_domxml.dll
    php ругается:Call to undefined function domxml_new_doc
    типа не знаю чё за функция такая..
    я защёл на яндекс и понял что нужна библиотека php_domxml.dll
    я скачал её версии 5.2.1.1 ( php у меня версии 5.0.5.5 ), раскоментировал extension=php_domxml.dll,
    грузанул комп и апатч и попробывал запустить всё заново
    при загрузке php начал ругатся на отсутствие библиотеки php4ts.dll
    я её скачал и снова грузанул апатч
    апатч снова ругается
    точка входа в процедуру _php_stream_open_wrapper_as_file не найдена в библиотеке php4ts.dll
    дальше диалог на отсутствиепроцедуры выскакивает и снова ругань на счёт _php_stream_open_wrapper_as_file
    пытаюсь запустить функция пишет Call to undefined function domxml_new_doc ….

    короч прочитал ещё в сети типа domxml_new_doc это функция из php 4 и библиотека php_domxml.dll конфликтует с встроенной поддержкой xml в php 5 …

    я решил удалить php_domxml.dll php4ts.dll и переписать эту функцию пользуясь этой "встроенной в php 5 подержкой xml"

    вот что получилось
    function wm_X9Req(){
    global $wmType, $wmWMID;

    $reqID = wm_ReqID();

    $doc = new DOMDocument('1.0', 'iso-8859-1');
    $root = $doc->createElement('w3s.request');
    $root = $doc->appendChild($root);
    $tmp = $doc->createElement('reqn');
    $tmp->set_content($reqID);
    $root->append_child($tmp);
    $tmp = $doc->create_element('wmid');
    $tmp->set_content($wmWMID);
    $root->append_child($tmp);

    if($wmType=='classic'){
    $tmp = $doc->create_element('sign');
    $tmp->set_content(wm_GetSign($wmWMID.$reqID));
    $root->append_child($tmp);
    $addr = 'XMLPurses.asp';
    } else {
    $addr = 'XMLPursesCert.asp';
    };

    $getpurses = $doc->create_element('getpurses');
    $root->append_child($getpurses);
    $tmp = $doc->create_element('wmid');
    $tmp->set_content($wmWMID);
    $getpurses->append_child($tmp);

    $request = $doc->dump_mem(TRUE);

    $result = wm_xmlHttpsReq($addr, $request);

    $xml_parser = xml_parser_create('UTF-8');
    xml_parse_into_struct($xml_parser, $result, $vals, $index);
    xml_parser_free($xml_parser);

    $check = wm_CheckResp($vals,$index);
    if( $check != 0) die($check);

    $purses = array();
    $pursename = '';
    $amount = '';
    $desc = '';
    for($n = 0; $n < count($vals); ++$n){
    $e = $vals[$n];
    switch ($e['tag']){
    case 'PURSE':
    switch ($e['type']){
    case 'open':
    $pursename = ''; $amount = ''; $desc = '';
    break;
    case 'close':
    $purses[$pursename] = array('amount' => $amount,

    'desc' => $desc);
    break;
    }
    break;
    case 'PURSENAME':
    $pursename = $e['value'];
    break;
    case 'AMOUNT':
    $amount = $e['value'];
    break;





    не знаю чем заменить функцию curl_init, set_content и dump_mem … короч запутался в конец..

    нашёл в иенете готовый серв с php 4 и установленной уже php_domxml.dll
    в результате функция domxml_new_doc заработала но php всеравно ругается
    пишет

    Warning: append_child() expects parameter 1 to be object, string given in c:\serv\сайты\localhost01\html\2\phpxml\index.php on line 202

    Fatal error: Call to a member function on a non-object in c:\serv\сайты\localhost01\html\2\phpxml\index.php on line 205


    я близок к истерической панике
    этот форум моя последняя надежда !
    помогите а ?
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 3 мая 2008 г. 9:30, спустя 38 минут 4 секунды

    блин, ну сказали же тебе, ошибка вот здесь
    $root = $doc->appendChild($root);

Пожалуйста, авторизуйтесь, чтобы написать комментарий!