PHPでHTMLをスクレイピングしてjQueryのように操作できるphpQueryで「Interface ‘Countable’ not found in〜」や「Class ‘DOMDocument’ not found」が出た:解決

PHPでHTMLの特定の一部分を取得しようと思うと、大まかに分ければ次の2つに分かれます。

  • 自分で解析する方法
  • DOMで解析する方法

前者は正規表現などを使って処理するのが一般的でしょう。
その際問題となるのは、不特定のサイトの解析を確実に行うのは大変だろう、という点です。

そこで、DOMをベースにする後者の方が汎用的なのですが、これを通常のPHPで(DOMを使って)行うには実に単調な作業になってしまいます。

そんな手間を省き、まるでJavaScriptライブラリのjQueryのようにデータを扱うことができる、phpQueryというライブラリを使おうとセットアップしたのですが、次の様な2つのエラーが出てしまいました。

  • Interface ‘Countable’ not found in /path/to/phpQuery-onefile.php
  • Class ‘DOMDocument’ not found

この記事は、上記のエラーへの対応する内容のメモです。

参考:phpQuery

エラーの原因

Countableインターフェースが見つからない

Countableインターフェースがないと言う問題に関しては、CountableインターフェースがPHP 5.1.0以降のバージョンで使えるものだと言うのが原因です。

レンタルサーバーの設定で、それPHP 5.1.0以降のバージョンで動かせるように設定を変更しましょう。

今回使っていたレンタルサーバーのinetdでは、次の内容を.htaccessに記述するタイプの対応方法でした。

Action php-script /.system_cgi/php55.cgi

DOMDocumentクラスが見つからない

DOMDocumentクラスが見つからないのは、利用するライブラリが見つからないのが原因です。

コンパイルオプションでライブラリを静的にリンクし直すか、モジュールの読み込みで対応しましょう。

今回使っていたレンタルサーバーのinetdでは、次の内容をphp.iniに記述するタイプの対応方法でした。

extension=dom.so

まとめ

ライブラリはとても便利なものですが、今回の様に環境に依存する部分があると動かすまでが大変だったりする方も多いと思います。

でも、技術者は環境が作れて一人前です。サーバー類の勉強にもなりますから、せっかくなので身につけてしまいましょう♪

え?Webサイトのバックアップ、してないの!?

いざという時には復旧までしてくれる
『ワードプレス外部バックアップサービス』

■3つの特長
・自分でやらなくて良い
・いざという時の復旧付き
・外部サーバーにバックアップ

コメントを残す