スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 スポンサー広告 トラックバック:- コメント:-

Zend Framework resource.logを設定してログを取る

まずログファイルの出力先を用意します。
~/sample/data/logsとします。eclipse上でディレクトリを作成してください。
※Linux環境ではディレクトリを書き込み許可にしてください。

~/sample/application/configs/application.iniに設定を記述します。

##################################################
# 製品版設定
##################################################
[production]

# エラー表示(しない)
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

# アプリケーション構成
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"

# フロントコントローラ設定
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

# ログ設定
resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/application_" DATESTAMP ".log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 4


##################################################
# 開発版設定(製品版と異なるものだけ上書き記述する)
##################################################
[development : production]

# エラー表示(する)
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

# フロントコントローラ設定
resources.frontController.params.displayExceptions = 1

# ログ設定
resources.log.stream.filterParams.priority = 7



製品版では警告以上を出力、開発版ではデバッグ以上を出力としてます。
日毎にファイルを分けるために日付入りのファイル名としてます。
DATESTAMPを定義します。
~/sample/public/index.php


// Applicationディレクトリパスの定義
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// エンビューロメントの定義(環境切り替え用 .htaccessに記述)
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// library(ライブラリを配置している)ディレクトリにインクルードパスを通す
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

// 年月日文字列の定義(ログファイル名に使用)
define('DATESTAMP', Date('Y-m-d'));


// アプリケーションの起動
require_once 'Zend/Application.php';
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();


以上で設定終わりです。
アプリケーションを動かすとログファイルが出来てるはずです。
存在しないコントローラにアクセスするなどエラーを起こせばメッセージ出力が確認できます。
(Zend_Toolで作ったエラーコントローラならばメッセージが出力されます)
スポンサーサイト

2010年06月02日 Zend Framework トラックバック:0 コメント:1

Zend Framewaork 環境別設定の仕組みを見てみる

application.iniにアプリケーション設定情報を記述します。各環境別に定義しています。

まずZend_Toolで作成したままの内容を見てみます。
~/sample/application/configs/application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1


productionに標準の設定情報をまとめてます。
それを継承したstaging、testing、developmentにproductionから設定を変えたい項目を上書きしているといった内容です。
「production(製品版)」ではエラー時に情報を画面に出力しないが
「testing(テスト版)、development(開発版)」では表示する。
となっています。

面倒なのでstagingとtestingは削除します。あと分りやすくコメントを付けます。
編集後

##################################################
# 製品版設定
##################################################
[production]

# エラー表示(しない)
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

# アプリケーション構成
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"

# フロントコントローラ設定
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0


##################################################
# 開発版設定(製品版と異なるものだけ上書き記述する)
##################################################
[development : production]

# エラー表示(する)
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

# フロントコントローラ設定
resources.frontController.params.displayExceptions = 1



次に関係してくるのが~/sample/public/index.phpです。
application.iniを読み、アプリケーションを実行しています。
この際、定数「APPLICATION_ENV」の値によって環境を判別しています。
(productionやdevelopmentなど。未定義ならproductionとする。)
内容に変更はありませんがコメントを付けます。

編集前

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application( 
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap() 
                      ->run();


編集後

// Applicationディレクトリパスの定義
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// エンビューロメントの定義(環境切り替え用 .htaccessに記述)
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// library(ライブラリを配置している)ディレクトリにインクルードパスを通す
set_include_path(implode(PATH_SEPARATOR, array( 
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(),
)));

// 年月日文字列の定義(ログファイルデイリーサフィックスに使用)
define('DATESTAMP', Date('Y-m-d'));

// 定数クラスの読み込み
require_once APPLICATION_PATH . '/Constant.php';

// アプリケーションの起動
require_once 'Zend/Application.php';
$application = new Zend_Application( 
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap() 
                      ->run();


そして「APPLICATION_ENV」を設定するのは~/sample/public/.htaccessです。
つまり環境によって書き換えるのはこのファイルだけです。

編集前

RewriteEngine On
RewriteBase /sample/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


編集後

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteBase /sample/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


製品版(公開サーバ)ではdevelopmentをproductionに書き換えましょう。

2010年05月31日 Zend Framework トラックバック:0 コメント:0

Zend Framework アプリケーションを動かしてみる

Zend_Toolで作成したプロジェクトを動かしてみます。

1.Zendライブラリの配置
  ZendFramework\library\Zendをコピーしてeclipse上でsample/libraryの中に配置します。

2.「.htaccess」の編集
  sample/public/.htaccessにはリライトの設定がされています。
  このままではドキュメントルートでしか動かせないので
  リライトベースの記述を追加します。

編集前

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


編集後

RewriteEngine On
RewriteBase /sample/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


※.Apacheのリライトモジュールが無効ならば有効にして再起動してください。

3.ブラウザで「http://localhost/sample/public/」にアクセスします。
  Welcome to the Zend Framework!と出たら成功です。

2010年05月28日 Zend Framework トラックバック:0 コメント:-

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。