読者です 読者をやめる 読者になる 読者になる

かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PHP Cache_Lite 使おうとしたらPEAR.phpが読み込めなくてエラーが表示された。

すごい昔に作られたサイトの改修をしていました。WordPress製だったので、丸っとデータを貰ってローカル環境で表示させてみた所、下記のようなワーニングとエラーが表示されてしまいました。

Warning: include_once(PEAR.php): failed to open stream: No such file or directory in /site/wp-content/themes/theme/lib/cache/Lite.php on line 557

Warning: include_once(): Failed opening 'PEAR.php' for inclusion (include_path='.:') in /site/wp-content/themes/theme/lib/cache/Lite.php on line 557

Fatal error: Class 'PEAR' not found in /site/wp-content/themes/theme/lib/cache/Lite.php on line 558

要するにテーマの中でCache_Liteが使われているのだけれど、その中でPEAR.phpを読み込ませてPEARクラスを使うようになっているんだけど、PEAR.phpが読み込めないからワーニングとエラーが出てしまっているようです。
どうやら本番環境のサーバーではPEARが読み込まれているけど、ローカル環境ではPEARが読み込まれていないのが原因っぽい?感じでした。

php.ini でpearのinclude_pathを指定すればOK

今使っているPHPphp.iniを探します。

<?php phpinfo(); ?>

PHPの情報を確認します。
その中にConfiguration File (php.ini) Pathという項目があります。そこに示されているパスにphp.iniがあります。

php.iniを編集します。
pearなどでファイル内を検索すると

; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path

のようなものが書かれている部分が見つかりますので、ここに追記します。

; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
include_path = ".:/usr/local/opt/php56/lib/php" ; <- 追記

サーバーを再起動して、ワーニングとエラーが表示されてなければOK。
なぜかinclude_path = ".:/usr/local/opt/php56/bin/pear"だとワーニングとエラーが表示されるままだった。。。

homebrewで--with-pearオプションでPHPをインストールし直すだけでもOKだった。

$ brew install php56 --with-intl --with-mysql --with-pear

なぜかphp.inipearのinclude_pathを書かなくてもpear読み込めてた。

今回のヲチ

そして本番環境を確認しに行くと、phpのバージョンが5.3だった...orz
古いバージョンじゃ使えないメソッドとかでエラーとか出してしまいそうだから、再び5.3を入れなおすことに...
phpバージョン違いの環境管理がめんどすぎデース٩(๑`^´๑)۶

PHP事情に明るくないのですが、PEARってもう使われて無いのですかね?検索しても2、3年前の記事ばかり出てきますですし。
WordPress内で独自にパーツとかをキャッシュするのは何を使うのがナウでヤングな感じなのですか?
知っていたら教えて下さい!


[参考]