dポイントプレゼントキャンペーン実施中!

Fatal error: Call to undefined function domxml_open_mem() in C:\xampp\htdocs\data.php on line 16

以上のようなエラーが出てしまいました.domxml_open_mem関数がうまく呼び出されていないようですが, エラーの解決方法を教えていただきたいのですが.ご存知の方はご教授いただけたら幸いです.

スクリプトの内容ですが,16,17行目付近は
$xml = $result['body'];
if(!$dom = domxml_open_mem($xml,DOMXML_LOAD_PARSING,$domerror))
このように記述しています.
環境のOSはWindowsでphp versionは5.2.3を使用しています.

A 回答 (4件)

> リンク先のGNOME XMLライブラリをダウンロード,


> インストールする必要があるのですが,
> pearコマンドを用いてインストールする際,
> 引数としてGNOME XML(ライブラリ名)を指定したらいいのでしょうか?
> うまくいかなく困っています.

文の訳が悪いのかちょっとわかりにくいかもしれませんが、
参照するのはこっちです。


Windows ユーザの場合、これらの関数を使用するには php.ini の php_domxml.dll を有効にしてください。 PHP 4 の場合、この DLL は PHP の Windows ダウンロードバイナリの extensions/ ディレクトリにあります。 この PECL 拡張モジュール用の DLL は、» PHP のダウンロード ページあるいは » http://pecl4win.php.net/ からダウンロードできます。 また、この拡張を有効にするためには、追加の DLL をシステムパスにコピーする必要があります。 PHP 4 では、この DLL は dlls/ にあります。 DLL 名は、PHP <= 4.2.0 で libxml2.dll、 PHP >= 4.3.0 で iconv.dll です。 また、PHP 5.0.0 以降では iconv が Windows 用 PHP バイナリにデフォルトでコンパイルされていますので、 外部 DLL は必要ありません。


ですので、
PHP: Downloads
http://www.php.net/downloads.php

PECL4WIN :: The PECL Windows Repository
http://pecl4win.php.net/list.php
へ行って、コンパイル済みの
DLLを取ってれば良いです。

前者のリンクだと、PECL全部のアーカイブしかないようなので、
後者のリンクへ行き、
http://pecl4win.php.net/ext.php/php_domxml.dll
をダウンロードします。

これを、phpのインストールされているディレクトリにコピーして、
php.iniを編集し
extension=php_domxml.dll

という行を追加します。
これで、
domxml_open_mem などの関数が使えるようになりますが、

PHP Notice: Constant XML_ELEMENT_NODE already defined in Unknown on line 0
PHP Notice: Constant XML_ATTRIBUTE_NODE already defined in Unknown on line 0
PHP Notice: Constant XML_TEXT_NODE already defined in Unknown on line 0
PHP Notice: Constant XML_CDATA_SECTION_NODE already defined in Unknown on line 0

のような警告メッセージが盛大に出ます
(実行は可能)
これは、5.xでは組み込みでこれらの定数が
定義されているためです
#SimpleXML があるため
#これは特に追加で何かをインストールしないでも
#使えます。

両者の間でこれらの定数が同じ値であるかどうかは
知りません。
ですので、問題なくつかえるかどうかもわたしは
保証できませんのでそのおつもりで。
    • good
    • 0
この回答へのお礼

sakusaker7様,
ご説明の通りに設定してみます.
ご教授ありがとうございました.

お礼日時:2007/10/01 18:14

> 具体的にどういったライブラリを拡張してインストールする必要があるのでしょうか?



リンク先の内容も確認した上でこのようなご質問をされているのでしょうか?

この回答への補足

>リンク先の内容も確認した上でこのようなご質問をされているのでし >ょうか?

申し訳ありません.
phpにあまり詳しくなく,質問ばかりになってしまうのですが,
リンク先のGNOME XMLライブラリをダウンロード, インストールする必要があるのですが,pearコマンドを用いてインストールする際,引数としてGNOME XML(ライブラリ名)を指定したらいいのでしょうか?うまくいかなく困っています.

補足日時:2007/10/01 01:09
    • good
    • 0

XMLのライブラリはインストールしていますか?


php5なら標準でSimpleXML関数は使えますので、そちらを使っては?

この回答への補足

memphis140様,
ご回答ありがとうございます.
phpにあまり詳しくないのですが, php5でSimpleXML関数を利用するためのライブラリはどういったパッケージ名でインストール可能なのでしょうか?よろしくお願いします.

補足日時:2007/09/30 23:19
    • good
    • 0

それらの関数は5.xでは(少なくとも標準では)使えません。



PHP: DOM XML 関数 - Manual
http://php.mirror.camelnetwork.com/manual/ja/ref …

にある
注意: この拡張モジュールは » PECL レポジトリに移動されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.0.0.

注意: この拡張は実験的なものではありません。しかしながら、PHP 5 版は決してリリースされないでしょう。PHP 4 でのみ配布されます。 もし PHP 5 でDOM XML をサポートする必要がある場合、 DOM 拡張を使用することができます。 この domxml 拡張は DOM 拡張と互換性はありません。

にしたがって、別途拡張としてインストールするなり
書き直すなりしてください。

この回答への補足

sakusaker7様,
ご回答ありがとうございます.

>もし PHP 5 でDOM XML をサポートする必要がある場合、 DOM 拡張を
>使用することができます。 この domxml 拡張は DOM 拡張と互換性は >ありません。
>別途拡張としてインストールするなり
とのことですが, 具体的にどういったライブラリを拡張してインストールする必要があるのでしょうか?

補足日時:2007/09/30 23:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!