私は最近、「生産のニーズに応じて」Yiiに従事しました。 その前に私はZFに座っていました。 Yiiのいくつかのことは、不快または柔軟性に欠けるようです。 特に、個別の構成がなく、フロントエンド/バックエンドで動作します。 真のARは喜んで))。 しかし、私は何について話しているのですか?!
要点をつかむ
便利で柔軟な構成で、最初から始めましょう。 もちろん、 パブリックサーバーと開発者の構成を分離する決定の前に、私はフォーラムに登り、彼らがハブに書いているものを見ました...しかし、すべての決定は、希望する構成に関するホスト名とその決定に基づいて決定されます。 しかし、ありがとうございます、テスターがいます、開発チームがあり、もっとたくさんあります。 一般的に、私は提案されたアプローチが好きではありません。 ZFの例に従ってソリューションを提案します。 すべてが非常に簡単です。 私はApacheを使用していますので、解決策はそれです。 秘密は、サーバー変数APPLICATION_ENVを定義することであり、他のすべては他のすべての場所と同じです。
Index.phpファイル
// . . . // production defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Yii $yii=dirname(__FILE__).'/../framework/yii.php'; /** * */ if (APPLICATION_ENV == 'devel') { defined('YII_DEBUG') or define('YII_DEBUG',true); defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3); } // $config = dirname(__FILE__).'/protected/config/'.APPLICATION_ENV.'.php'; require_once($yii); Yii::createWebApplication($config)->run();
apache2のサイト構成ファイル
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName myplace.dev DocumentRoot /home/project/dev/myplace/public # . SetEnv APPLICATION_ENV "devel" <Directory /home/project/dev/myplace/public/> AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
利便性を高めるために、例に従って構成のマージを使用できます
構成フォルダー内のproduction.phpおよびdevel.phpファイル
<?php return CMap::mergeArray( // main.php require(dirname(__FILE__).'/main.php'), array( 'components'=>array( // db 'db' => array ( // ), ), ) );
このようなアプローチは、必要な構成の柔軟性を提供し、開発チームが同じプロジェクトで便利に作業できるようにします。
成功。