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 関連のクラスを使うことができるようになった感じです。