開発のどの時点かハッキリしないが、CakePHP 1.2で「vendor()」を利用してphpの外部プログラムが実行できないようになった。PEARのライブラリ群を利用する際、PEARへのインク ルードパスを一時的に設定して、望みのモジュールを読み出して利用するなど重宝していた。
共有サーバーでPEARを利用する際、使いたいモジュールだけコピーして使うのが、領域を節約できて良いように感じる。なので、ベースとなる PEAR.php を PEAR/PEAR.php とし、他のモジュールは、PEAR/XML/Rss.php のようにPEARディレクトリ下へコピーして使っている。
現在のCakePHP1.2で外部モジュールの読み出しは、「App::import()」を利用するようになったのだが、 「App::import(‘Vendor’, ‘pear.ini’)」で動作せず、いくつか試してみたがうまく動作させる方法がみつけられないでいる。
PEARへのインクルードパスを通すためのプログラムは、
<?php define('PEAR_PATH', dirname(__FILE__) . DS . 'PEAR'); set_include_path(PEAR_PATH . PATH_SEPARATOR . get_include_path()); ?>
で、ROOT/vendors/pear.ini.phpである。
さて、今どのようにしているかと言うと、アクションの先頭でrequire_onceを利用して、
require_once(ROOT . DS . 'vendors/pear.ini.php'); require_once('XML/Rss.php');
として、実行するようにした。
だったら、PEARをvendorsに置く必要もないか(^_^;)。