cakePHPのshellからPEARを使おうとしてハマった

http://copo.jp/mizu/?p=98
この方法で、cakePHPのコントローラからPEARを使えたので、shellでも使えるかと思ったらダメだった話。
cakePHPのバージョンは1.3.9、PHPのバージョンは5.2.17。


cakePHPでshellの動かし方は、コチラを参照。
CakePHP 1.2 シェル機能でバッチ処理やコマンドをサーバー側で実行する - Web Tech Log by 1KB


app/vendors/shells に test.php 作って、

<?php
App::import('pear', 'Consumer', array('file' => 'HTTP/OAuth/Consumer.php'));

こう書いて実行すると、

%./cake.php test2 0 0 -app /home/username/app

Warning: require_once(HTTP/OAuth.php): failed to open stream: No such file or directory in /home/hsksyusk/pear/PEAR/HTTP/OAuth/Consumer.php on line 24

Fatal error: require_once(): Failed opening required 'HTTP/OAuth.php' (include_path='.:/usr/local/php/5.2.17/lib/php') in /home/hsksyusk/pear/PEAR/HTTP/OAuth/Consumer.php on line 24
%

HTTP/OAuth.phpはHTTP/OAuth/Consumer.phpの親みたいなものだと思われるので、たぶん直接呼んだphpは読めるけど、その先にあるphpは読めないっぽい。
ためしに他のパッケージでもやってみたら、依存パッケージがことごとく読めずに同じエラーを吐いてた。


bootstrapの設定がpearの中では効いてないってことだろうか。


とりあえず、別な方法でPEARを使うことで回避した。
cakephpでPEARライブラリを利用する。 | php-tips.com
この方法でやれば、shellの中でも問題なく動いた。んー。