プロジェクトを作ったらまずやること
Ethna 2.3.6で
$ ethna add-project sample
した後。
ローカルと本番サーバで配置するパスが違ったり、本番サーバに勝手にPEARパッケージをインストールすると他のプロジェクトに影響したりするかもしれないので、
- プロジェクトの外のファイルに依存しない
- 絶対パスは排除
な方向で。
ディレクトリ構成をいじる
$ mv sample project $ mkdir sample $ mv project sample/ $ mv sample/project/www/* sample $ rm -r sample/project/www
こうなる。
. `-- sample |-- css |-- js `-- project |-- app | |-- action | |-- action_cli | |-- action_xmlrpc | |-- filter | |-- plugin | | |-- Filter | | `-- Validator | |-- test | `-- view |-- bin |-- etc |-- lib |-- locale | `-- ja | `-- LC_MESSAGES |-- log |-- schema |-- skel |-- template | `-- ja `-- tmp
エントリポイントのrequire_onceのパスをいじる。
sample/index.php
<?php require_once dirname(__FILE__).'/project/app/Sample_Controller.php'; // ここ Sample_Controller::main('Sample_Controller', 'index'); ?>
pear-localの設定
$ cd sample/project
$ ethna pear-local
プロジェクト内にPEARの設定ファイルが作成される。「ethna pear-local config-show 」して、フルパスになってるものを相対パスに変更、あとdownload_dirをlibからtmpに変更。
$ ethna pear-local config-set bin_dir bin
$ ethna pear-local config-set doc_dir lib/.pear/doc
$ ethna pear-local config-set ext_dir lib/.pear/ext
$ ethna pear-local config-set php_dir lib
$ ethna pear-local config-set cache_dir tmp/.pear/cache
$ ethna pear-local config-set data_dir lib/.pear/data
$ ethna pear-local config-set download_dir tmp/.pear/download
$ ethna pear-local config-set temp_dir tmp/.pear/temp
$ ethna pear-local config-set test_dir lib/.pear/test
必要なPEARパッケージをインストール
$ ethna pear-local channel-update pear.php.net Updating channel "pear.php.net" Update of Channel "pear.php.net" succeeded $ ethna pear-local channel-discover pear.ethna.jp Adding Channel "pear.ethna.jp" succeeded Discovery of channel "pear.ethna.jp" succeeded $ ethna pear-local install -a pear downloading PEAR-1.7.2.tgz ... Starting to download PEAR-1.7.2.tgz (302,744 bytes) .....................done: 302,744 bytes downloading Archive_Tar-1.3.2.tgz ... Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes) ...done: 17,150 bytes downloading Structures_Graph-1.0.2.tgz ... Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes) ...done: 30,947 bytes downloading Console_Getopt-1.2.3.tgz ... Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes) ...done: 4,011 bytes downloading XML_RPC-1.5.1.tgz ... Starting to download XML_RPC-1.5.1.tgz (32,215 bytes) ...done: 32,215 bytes install ok: channel://pear.php.net/Archive_Tar-1.3.2 install ok: channel://pear.php.net/Structures_Graph-1.0.2 install ok: channel://pear.php.net/Console_Getopt-1.2.3 install ok: channel://pear.php.net/XML_RPC-1.5.1 install ok: channel://pear.php.net/PEAR-1.7.2 PEAR: Optional feature webinstaller available (PEAR's web-based installer) PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer) PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer) PEAR: To install optional features use "pear install pear/PEAR#featurename" $ ethna pear-local install -a ethna/ethna WARNING: "pear/DB" is deprecated in favor of "pear/MDB2" downloading Ethna-2.3.6.tgz ... Starting to download Ethna-2.3.6.tgz (183,262 bytes) ......................................done: 183,262 bytes downloading DB-1.7.13.tgz ... Starting to download DB-1.7.13.tgz (132,246 bytes) ...done: 132,246 bytes downloading Smarty-2.6.22.tgz ... Starting to download Smarty-2.6.22.tgz (69,414 bytes) ...done: 69,414 bytes downloading simpletest-1.0.1.tgz ... Starting to download simpletest-1.0.1.tgz (273,378 bytes) ...done: 273,378 bytes install ok: channel://pear.ethna.jp/Ethna-2.3.6 install ok: channel://pear.php.net/DB-1.7.13 install ok: channel://pear.ethna.jp/Smarty-2.6.22 install ok: channel://pear.ethna.jp/simpletest-1.0.1
コントローラのインクルードパス設定をいじる
sample/project/app/Sample_Controller.php
<?php $app = BASE . "/app"; $lib = BASE . "/lib"; //ini_set('include_path', implode(PATH_SEPARATOR, array($app, $lib)) . PATH_SEPARATOR . ini_get('include_path')); ini_set('include_path', implode(PATH_SEPARATOR, array($app, $lib)));
プロジェクト内のファイルだけ参照するようにする。
できあがり。