
Windows10(64bit)環境へZend Framework1.x(1.12.17)をインストールしてみる
2016/05/31
今更ですが Zend Framework 1系統の環境が必要になったので、インストールしてみました。未来への遺産ということで、そのインストール手順を備忘録としてポストします。
Zend Frameworkダウンロード
まずはダウンロード。
下記ページより行います。
↑ 1系統、2系統を選べます。
今回は現段階の1系統最新版である、バージョン 1.12.17 を選択。
↑ ダウンロードするには(会員)登録を行えとのことなので、面倒ですが登録してみます。「Register Now」ボタンをクリック。
下記項目を入力。メールアドレス以外は適当に入力しても大丈夫そうです。
- First Name:名
- Last Name :姓
- Company:会社名
I'm not associated witha a company:無職です(会社には )就職していません - Phone:電話番号
090-1234-5678 の場合、国番号(日本:+81)、最初の0を省いた90からあとの番号となり、最終的には「+81-90-1234-5678」のように記述します。 - Country:国名
- What is your role?:あなたの役割は何ですか?→選択肢を見ると、開発者やら生徒とあるので、役職とか、立場のようです。
↑ 任意のバージョンを選択、ダウンロードします。
↑ zipファイルでダウンロードした ZendFramework-1.12.17
Zend Framework1.x のインストール方法
今回は現段階の1系統最新版である、バージョン 1.12.17 を設置します。
サーバ環境は以下のとおり。
- OS : Windows10(64bit)
- Apache : 2.4
- PHP : 5.6.xx
ちなみに、この環境で古いバージョンの ZendFramework 1.7 も動作したことを備忘録として明記しておきます。
Apache2.4
バーチャルホスト作成
apache24/conf/extra/httpd-vhosts.conf
[default]
ServerAdmin toogie@hoge.com
DocumentRoot "I:/website_data/SAMPLESITE.COM/sample-site.com/public_html"
ServerName sample-site.localhost
ServerAlias sample-site.localhost
ErrorLog "| bin/rotatelogs.exe I:/website_data/SAMPLESITE.COM/sample-site.com/logs/firsttest.lh-error_%Y%m.log 86400"
CustomLog "| bin/rotatelogs.exe I:/website_data/SAMPLESITE.COM/sample-site.com/logs/firsttest.lh-access_%Y%m.log 86400" combined
AllowOverride All
Require all granted
[/default]
必ず、AllowOverride All で .haccess を使用出来るようにしてください。
詳細は過去記事を参照。
https://nodoame.net/archives/7124
mod_rewriteを有効に
mod_rewriteを有効にする必要があるので、Apache24/conf/httpd.conf の、下記モジュールのコメントアウトを外してください。
[default]
LoadModule rewrite_module modules/mod_rewrite.so
[/default]
詳しくは、過去記事を参照
https://nodoame.net/archives/7071
Zend Framework展開、ディレクトリ構成の例
例として
- indexコントローラー、indexアクション
- Messageコントローラー、helloアクション
を設置する例とします。
ルートディレクトリ(sample-site.com)下に、以下のように展開します。
[default]
[sample-site.com] ←ルートディレクトリ
│
├[application] ←(非公開ディレクトリ)
│ ├[controllers]
│ │ ├IndexController.php
│ │ └MessageController.php
│ ├[models]
│ └9,349 views
│ └[scripts]
│ ├[index]
│ │ └index.phtml
│ └[message]
│ └hello.phtml
│
├[public_html] ←ドキュメントルート(公開ディレクトリ)
│ ├.htaccess
│ └index.php
│
├[ZendFramework-1.12.17] ←ZF本体(非公開ディレクトリ)
│
└[logs] ←ログ(非公開ディレクトリ)
[/default]
※規約であるファイル/ディレクトリの大文字、小文字に気をつけてください
ルートディレクトリ
ルートディレクトリ以下、ドキュメントルートと同列の"非公開エリア"に展開した ZendFramework を配置。
同列に、MVCのコントローラーやビューファイルを設置する application ディレクトリを作成。
モデルはディレクトリだけで、ファイルが無いのがよくわかりませんがw
ドキュメントルート
.htaccessと、index.php を設置。
この index.php を特に「フロントコントローラー」と呼ぶようです。
.htaccess
[default]
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
[/default]
index.php
[php]
SetControllerDirectory('../application/controllers');
// コントローラ実行
$response = $front->dispatch();
// デバッグ関数
function pr($val) {
echo '<pre>';
print_r($val);
echo '</pre>';
}
[/php]
若干、クセのある書き方ですが、概ね上記のような形になると思います。
デバッグ関数は CakePHP でお馴染みのデバッグ関数 pr(); を使いたいがために記述しているだけです。
application(IndexController 関係)
まずは IndexController 関係から。
controllres, models, views という、複数形でそれそれ、コントローラー、モデル、ビュー用のディレクトリを作成。
controllersディレクトリ下に、今回用の IndexController.php を作成。
IndexController.php
[php]
view->setEncoding("utf-8");
$this->view->message = 'Hello world'; // ビュースクリプト側変数へ代入
}
}
[/php]
viewsディレクトリ下に scripts ディレクトリを作成、scripts下に、コントローラーと対比するように indexディレクトリを作成し、その中にアクションと同名の index.phtml を作成します。
index.phtml
[php]
インデックス
';
echo $this->escape($this->message);
?>