[Zend Framework] レンタルサーバに Zend Framework をインストールする

レンタルサーバとしてますが ZendServer を用いない、通常の方法です。
インストールというか設置ですね。

[markdown]

## 想定ディレクトリ構成

こんなディレクトリ構成を想定して設定していきます。

“`
./home/<あなたの契約ID>
├── projects
│   └── sample
│   └── public
└── public_html
└── www
└── sample
“`

* projects/sample が zf で作成したプロジェクトディレクトリ。
* public_html が公開ディレクトリ。
* http://www.foo.com/sample のような形式でアクセスできるように設定。

契約しているレンサバが、サブドメインとかそういった名前のサービス付きならば、http://sample.foo.com とか http://sample.com とかの設定もできると思います。

## composer で ZF1 をインストール

いまは zendframework1 も composer でインストールできるんですね。

> * Packagist
> * zendframework (Zend Framework) · GitHub
> * [Composer – インストール | deadwood](https://www.d-wood.com/blog/2013/06/16_4017.html)

“`:home/<あなたの契約ID>/composer.json
{
“require”: {
“zendframework/zendframework1”: “1.12.*@dev”
}
}
“`

## 公開ディレクトリの設定変更

“`
./home/<あなたの契約ID>
├── projects
│   └── sample
│   └── public
└── public_html
└── www
└── sample
“`

projects/sample/public 内の index.php, .htaccess をレンタルサーバの公開ディレクトリへコピーします。

“`
$ cp projects/sample/public/index.php public_html/www/sample/
$ cp projects/sample/public/.htaccess public_html/www/sample/
“`

以下、ファイルの内容を現在の構成にあわせて書き換えていきます。
最初の行でインストールした ZendFramework1 を読み込むようにしています。

“`:public_html/www/sample/.htaccess
php_value include_path “.:/home/<あなたの契約ID>/vendor/zendframework/zendframework1/library”
SetEnv APPLICATION_ENV production
RewriteBase /sample
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ index.php [NC,L]
“`

path がおかしくならないよう RewriteBase も書いておきます。
APPLICATION_ENV も便利なので設定しておきましょう。

> * [APPLICATION_ENV を設定する | deadwood](https://www.d-wood.com/blog/2013/08/03_4427.html)
プロジェクトディレクトリへのパスの部分を書き換えます。

“`php:public_html/www/sample/index.php
// Define path to application directory
defined(‘APPLICATION_PATH’)
|| define(‘APPLICATION_PATH’, realpath(dirname(__FILE__) . ‘/../../../projects/sample/application’));
“`

もしくは、index.php, .htaccess をコピーせず、代わりに symlink という選択肢もあります。

“`
$ ln -s ~/projects/sample/public/ ~/public_html/apps/sample
“`

この場合は、public/ 以下のファイルを使うことになります。
パスの修正は必要ないですね。

## autoload.php

下記のように書いた部分ですが、

“`:public_html/www/sample/.htaccess
php_value include_path “.:/home/<あなたの契約ID>/vendor/zendframework/zendframework1/library/”
“`

他の Composer パッケージを使うことを考えると、このようにしておいた方が良いのかもしれないですね。

“`php:public_html/www/sample/index.php
require_once __DIR__ . ‘/../../../vendor/autoload.php’;
“`

[/markdown]