• 締切済み

エラー内容に困っています

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を使用しています.

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.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 があるため #これは特に追加で何かをインストールしないでも #使えます。 両者の間でこれらの定数が同じ値であるかどうかは 知りません。 ですので、問題なくつかえるかどうかもわたしは 保証できませんのでそのおつもりで。

aja8
質問者

お礼

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

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

> 具体的にどういったライブラリを拡張してインストールする必要があるのでしょうか? リンク先の内容も確認した上でこのようなご質問をされているのでしょうか?

aja8
質問者

補足

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

回答No.2

XMLのライブラリはインストールしていますか? php5なら標準でSimpleXML関数は使えますので、そちらを使っては?

aja8
質問者

補足

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

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

それらの関数は5.xでは(少なくとも標準では)使えません。 PHP: DOM XML 関数 - Manual http://php.mirror.camelnetwork.com/manual/ja/ref.domxml.php にある 注意: この拡張モジュールは » PECL レポジトリに移動されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.0.0. 注意: この拡張は実験的なものではありません。しかしながら、PHP 5 版は決してリリースされないでしょう。PHP 4 でのみ配布されます。 もし PHP 5 でDOM XML をサポートする必要がある場合、 DOM 拡張を使用することができます。 この domxml 拡張は DOM 拡張と互換性はありません。 にしたがって、別途拡張としてインストールするなり 書き直すなりしてください。

aja8
質問者

補足

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

関連するQ&A