スポンサーサイト
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
以上で設定終わりです。
アプリケーションを動かすとログファイルが出来てるはずです。
存在しないコントローラにアクセスするなどエラーを起こせばメッセージ出力が確認できます。
(Zend_Toolで作ったエラーコントローラならばメッセージが出力されます)
〜/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で作ったエラーコントローラならばメッセージが出力されます)
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に書き換えましょう。
まず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に書き換えましょう。
Zend Framework アプリケーションを動かしてみる
Zend_Toolで作成したプロジェクトを動かしてみます。
1.Zendライブラリの配置
ZendFramework\library\Zendをコピーしてeclipse上でsample/libraryの中に配置します。
2.「.htaccess」の編集
sample/public/.htaccessにはリライトの設定がされています。
このままではドキュメントルートでしか動かせないので
リライトベースの記述を追加します。
編集前
編集後
※.Apacheのリライトモジュールが無効ならば有効にして再起動してください。
3.ブラウザで「http://localhost/sample/public/」にアクセスします。
Welcome to the Zend Framework!と出たら成功です。
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!と出たら成功です。


