すごい昔に作られたサイトの改修をしていました。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
今使っているPHPのphp.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.ini
にpearのinclude_pathを書かなくてもpear読み込めてた。
今回のヲチ
そして本番環境を確認しに行くと、phpのバージョンが5.3だった...orz
古いバージョンじゃ使えないメソッドとかでエラーとか出してしまいそうだから、再び5.3を入れなおすことに...
phpバージョン違いの環境管理がめんどすぎデース٩(๑`^´๑)۶
PHP事情に明るくないのですが、PEARってもう使われて無いのですかね?検索しても2、3年前の記事ばかり出てきますですし。
WordPress内で独自にパーツとかをキャッシュするのは何を使うのがナウでヤングな感じなのですか?
知っていたら教えて下さい!
[参考]
- php.iniの場所 php.iniの探し方 - tweeeetyのぶろぐ的めも
- HomebrewでPHP環境 現時点でのまとめ - なんたらノート第三期ベータ
- HomebrewでPHP56とPEARをインストールする. - harublog

ふなっしー 添い寝抱き枕(全長:約40cm) (千葉県船橋市 非公認ご当地キャラクター)
- 出版社/メーカー: グレイ・パーカー・サービス
- メディア:
- この商品を含むブログを見る