CPI のサブドメインが使える共用サーバで運営中のサイトにテスト環境を構築するメモ。
そもそも何が問題? そして、この環境で実現したい事
———————————————————————-
更新を簡単にするため、ヘッダー部分を PHP でインクルードする仕組みを採用。
テストが終わったファイルを本番化する場合は、テスト環境のファイルを本番環境にコピーします。
### 理想のテスト環境を作る条件など
– テスト環境のファイルを本番環境にコピーする時に、ファイルの中身を書き換えるのは面倒なので嫌。
– テスト環境のヘッダー部分をクリックしても、本番環境にジャンプしないようにする。
– /usr/home/xxxx/html/test/head.php は各環境でひとつしか無いので、環境に合わせて書き換える。
現在の状況 ( ドキュメントルートからパスを書いている )
———————————————————————-
現在の状況は次のようになっています。
usr |
└ home |
└ xxxx | ← ユーザー名
├ html | example.com ( 本番環境 )
│ ├ head.php | Home
│ └ index.php |
└ virtual |
└ test | test.example.com ( テスト環境 )
├ head.php | Home
└ index.php |
### 問題点
– /usr/home/xxxx/html/test/head.php が、どのファイルからも参照されない。
– head.php は SSL 領域でも使いたいので、http:// から始まる絶対パスで書いておきたい。
リンクを絶対パスから書く場合
———————————————————————-
現在の状況は次のようになっています。
usr |
└ home |
└ xxxx | ← ユーザー名
├ html | example.com ( 本番環境 )
│ ├ head.php | Home
│ └ index.php |
└ virtual |
└ test | test.example.com ( テスト環境 )
├ head.php | Home
└ index.php |
### 問題点
– やっぱり、/usr/home/xxxx/html/test/head.php が、どのファイルからも参照されない。
本番・テスト環境それぞれで PHP の include_path を書き換える
———————————————————————-
PHP の include_path と言うのを使うと、インクルードファイルが見つからない時、次にファイルを探しに行くディレクトリを指定できるんだそうな。
ただ、CPI の場合、.htaccess に php_value の設定があると 500 のエラーが出るので、include_path の設定は php.ini に書かないといけないみたい。
本番・テスト環境とも index.php には次のように書いておきます。
/usr/home/xxxx/html/.htaccess の中身 ( 本番環境 )
## 独自に設定した php.ini ファイルの場所を指定する
suPHP_ConfigPath /usr/home/xxxx/html/
/usr/home/xxxx/html/php.ini の中身 ( 本番環境 )
include_path = “.:/usr/home/xxxx/html”
/usr/home/xxxx/virtual/test/.htaccess の中身 ( テスト環境 )
## 独自に設定した php.ini ファイルの場所を指定する
suPHP_ConfigPath /usr/home/xxxx/virtual/test/
/usr/home/xxxx/virtual/test/php.ini の中身 ( テスト環境 )
include_path = “.:/usr/home/xxxx/virtual/test”
独自の php.ini を設置するのがセキュリティー的に問題ないか判断できなかったので、この方法は試していませんし、うまくいくかどうかも検証していません。 ゴメンナサイ (T_T)
### 参考にさせてもらったページ
– [こんにちは。PHP ファイルの include に関する質問です。 – 人力検索はてな](http://q.hatena.ne.jp/1211515314)
– [include_path:とことん!ホームページ](http://maihy.com/hp/phptech/phptech_incpath.html)
ありがとうございます。
ドメインによって読み込むファイルを変える
———————————————————————-
次のコードで出来ました。
各ファイルの中にドメイン名を書いてしまうと、ドメインが変更になった時に修正が大変。
何処か一箇所だけ書き換えれば済むような設計にしたい。
↑ 良くわかりませんが、上のような方法もあるようです。