PHP Fatal error. Class 'DOMDocument' not found エラーになった場合

SPECIAL


PHP で DOM を利用するためのクラスが見つからない場合

DOM で XML を操作する で記した方法で、PHP から XML データを操作しようとしたときに、次のようなエラーが発生する場合がありました。

PHP Fatal error:  Class 'DOMDocument' not found in xxxx on line xxx

これは、PHP に "php-xml" パッケージが組み込まれていないことが原因のようです。

 

これを解消するためには、CentOS 5.7 では、次のようにして "php-xml" パッケージをインストールする必要がありました。

yum install php-xml

ただしこのとき、自分の環境では次のようなメッセージが表示されてしまいました。

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package php-xml.x86_64 0:5.1.6-27.el5_7.5 set to be updated

--> Processing Dependency: php-common = 5.1.6-27.el5_7.5 for package: php-xml

--> Finished Dependency Resolution

php-xml-5.1.6-27.el5_7.5.x86_64 from updates has depsolving problems

--> Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-xml-5.1.6-27.el5_7.5.x86_64 (updates)

Error: Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-xml-5.1.6-27.el5_7.5.x86_64 (updates)

You could try using --skip-broken to work around the problem

You could try running: package-cleanup --problems

package-cleanup --dupes

rpm -Va --nofiles --nodigest

The program package-cleanup is found in the yum-utils package.

整理すると、どうやら "php-xml.x86_64 0:5.1.6-27.el5_5_7.5" をインストールするには "php-common 5.1.6-27.el5_7.5" が必要になるらしく、その "php-common 5.1.6-27.el5_7.5" をインストールするには "php-xml.x86_64 0:5.1.6-27.el5_5_7.5" が必要と言われているようでした。

それに続いて、この問題を回避するには "--skip-broken" をつけて実行するようにと書かれている感じです。

 

これに従ってやればいいのかとも思ったのですが、とりあえず、現在のシステムにインストールされている "php-common" のバージョンを調べてみたところ、"5.2.10-1.el5.centos" がインストールされているようでした。

そこで、現在の "php-common" に合うバージョンの "php-xml" がどこかにないか探してみたところ、"c5-testing" リポジトリにあることが分りました。

そこで、次のようにして "php-xml" パッケージをインストールします。

yum --enablerepo=c5-testing install php-xml

このようにしたところ、通常通りの方法で php-xml のインストールを行うことができました。

後は "service httpd restart" として apache を再起動してあげることで、DOMDocument や DOMElement といった DOM 関連のクラスを使うことができるようになった感じです。