環境設定とインストール

PHPのフレームワークZend Frameworkの環境設定方法とインストール方法です。

Zend Frameworkを使用するには、まずダウンロードサイトやSubversion(SVN)からソースファイルを入手します。
ダウンロードサイト

ソース内ではたとえば次のように使用するので、library内にあるZendディレクトリをインクルードできるようにする必要があります。

require_once 'Zend/Loader/Autoloader.php';

ディレクトリの設置
インクルードパスの設定
mod_rewriteの設定
.htaccessの記述
Zend Frameworkの動作確認

ディレクトリの設置

ダウンロードし、解凍したフォルダを、読み込み可能な階層に設置し、ディレクトリ名を『 ZendFramework 』にリネームする。

ZendFramework-【バージョン名】

ZendFramework

バージョン名を消すことで、Zend Frameworkのソースファイルをバージョンアップしたときにも、そのディレクトリのみを更新するだけですみます。

インクルードパスの設定

Zend Frameworkのファイルを読み込めるように、インクルードパスを設定します。
これにはいくつかの方法があります。

php.iniに記述する方法

php.iniの下記の部分にインクルードパスを追記します。

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
include_path = ".;【ZendFrameworkのパス】\library"

Windows版でgo-pearを使って、PEARを追加したときには、php.iniの最後にgo-pear用のインクルードパスの設定が追記されるので注意が必要です。

;***** Added by go-pear
include_path=".;C:\Program Files\PHP\pear"
;*****

;***** Added by go-pear
include_path=".;C:\Program Files\PHP\pear;【ZendFrameworkのパス】\library"
;*****

メリット
1つのサーバでZend Frameworkを使用するプロジェクトが複数あったとしても、Zend Frameworkのソースファイルを一元で管理できる。
他の方法に比べて動作が速い。

デメリット
php.iniに記述した場合、同サーバで使用するすべてのPHPに影響します。
また別サーバに移行する場合などにも、php.iniに追記する作業が発生します。

.htaccessに記述する方法

実行ファイルを設置している階層の.htaccssに次のコードを記述します。

php_value "include_path" ".;【ZendFrameworkのパス】\library"

php.iniに別のパスがすでに記述されていた場合は、追加する書き方をします。

php_value "include_path" ".;C:\Program Files\PHP\pear;c:\ZendFramework\library"

メリット
プロジェクトそれぞれで、Zend Frameworkを使用するかどうかを分けることができる。

デメリット
php.iniでインクルードパスの設定を変更したときに.htaccessも修正しなければいけない。
Zend Frameworkのソースファイルの設置場所によって、記述が異なる。

httpd.confに記述する方法

.htaccessによる方法と同様に、実行ファイルを設置している階層のみphp.iniの設定を変更します。

<Directory "C:/〜/htdocs">
  php_value "include_path" ".;【ZendFrameworkのパス】\library"
</Directory>

メリット
httpd.confに記述するより動作が速くなります。

共有ライブラリに設置する方法

共有ライブラリにlibrary内にあるZendディレクトリを設置します。

メリット
1つのサーバの全てに反映されるので、サーバ領域の節約になります。
Zend Frameworkのバージョンアップをするときは、サーバ内に複数のZend Frameworkプロジェクトがあっても1つのパッケージのみの更新で完了します。

デメリット
1つのZend Frameworkパッケージが複数のZend Frameworkプロジェクトに影響します。

PHPの実行ファイルに記述する方法

最初に読み込むPHPの実行ファイルに次のコードを記述します。

set_include_path(
  "【ZendFrameworkのパス】\library"
  . PATH_SEPARATOR .
  get_include_path());

メリット
プロジェクトそれぞれで、Zend Frameworkを使用するかどうかを分けることができる。
Zend Frameworkのソースファイルをプロジェクトファイルに追加しておくことで、別サーバへの移行が容易になる。

インクルードパスの確認方法

phpinfo()のinclude_pathを見ます。

mod_rewriteの設定

Zend Frameworkでは、MVCモデルのURL変換にmod_rewriteを使用するため、webサーバでmod_rewriteを使用できるようにします。

#LoadModule rewrite_module modules/mod_rewrite.so
  ↓
LoadModule rewrite_module modules/mod_rewrite.so

.htaccessを使用できるようにします。

<Directory "C:/〜/htdocs">
  AllowOverride All
</Directory>

.htaccessの記述

mod_rewriteの設定を.htaccessに記述し、PHP実行ファイルのドキュメントルートに配置します。

RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

『 ( ) 』の中は、Zend Frameworkを通さないファイルの拡張子です。
逆に、Zend Frameworkを通すファイルの拡張子のみを設定するには次のようにします。

RewriteEngine on
RewriteBase /
RewriteRule \.(php|html|htm)$ index.php
RewriteRule /$ index.php
RewriteRule ^$ index.php

拡張子による判断を行わない場合は、次のようにします。

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

IISサーバでは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^.*$" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}"
                             matchType="IsFile" pattern=""
                             ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}"
                             matchType="IsDirectory"
                             pattern=""
                             ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^.*$" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Zend Frameworkの動作確認

ドキュメントルートに動作確認用index.phpを設置します。

<?php
require_once 'Zend/Version.php';
echo Zend_Version::VERSION;

インクルードパスをPHPの実行ファイルに記述するようにしている場合は

<?php
set_include_path(
  "【ZendFrameworkのパス】\library"
  . PATH_SEPARATOR .
  get_include_path());

require_once 'Zend/Version.php';
echo Zend_Version::VERSION;

http://www.example.com/hoge.php
にアクセスし、Zend Frameworkのバージョンが表示されれば、インストールと環境設定は完了です。

このときmod_rewriteの設定確認ができなくなるため、index.phpにアクセスしてはいけません。

スポンサーリンク

関連記事

スポンサーリンク

$F() 関数

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る