CPI テスト環境構築に関するメモ

CPI のサブドメインが使える共用サーバで運営中のサイトにテスト環境を構築するメモ。

そもそも何が問題? そして、この環境で実現したい事 ———————————————————————-

更新を簡単にするため、ヘッダー部分を PHP でインクルードする仕組みを採用。 テストが終わったファイルを本番化する場合は、テスト環境のファイルを本番環境にコピーします。

理想のテスト環境を作る条件など

– テスト環境のファイルを本番環境にコピーする時に、ファイルの中身を書き換えるのは面倒なので嫌。 – テスト環境のヘッダー部分をクリックしても、本番環境にジャンプしないようにする。 – /usr/home/xxxx/html/test/head.php は各環境でひとつしか無いので、環境に合わせて書き換える。

現在の状況 ( ドキュメントルートからパスを書いている ) ———————————————————————-

現在の状況は次のようになっています。

usr                      | 
└ home                  | 
  └ xxxx               | ← ユーザー名
    ├ html            | example.com ( 本番環境 )
    │ ├ head.php     | <a href="/index.php">Home</a>
    │ └ index.php    | <!--<? include("/usr/home/xxxx/html/head.php"); ?>-->
    └ virtual         | 
      └ test         | test.example.com ( テスト環境 )
        ├ head.php  | <a href="/index.php">Home</a>
        └ index.php | <!--<? include("/usr/home/xxxx/html/head.php"); ?>-->

問題点

– /usr/home/xxxx/html/test/head.php が、どのファイルからも参照されない。 – head.php は SSL 領域でも使いたいので、http:// から始まる絶対パスで書いておきたい。

リンクを絶対パスから書く場合 ———————————————————————-

現在の状況は次のようになっています。

usr                      | 
└ home                  | 
  └ xxxx               | ← ユーザー名
    ├ html            | example.com ( 本番環境 )
    │ ├ head.php     | <a href="http://example.com/">Home</a>
    │ └ index.php    | <!--<? include("/usr/home/xxxx/html/head.php"); ?>-->
    └ virtual         | 
      └ test         | test.example.com ( テスト環境 )
        ├ head.php  | <a href="http://test.example.com/">Home</a>
        └ index.php | <!--<? include("/usr/home/xxxx/html/head.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 には次のように書いておきます。

<!--<? include("head.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 に関する質問です。 – 人力検索はてなinclude_path:とことん!ホームページ

ありがとうございます。

ドメインによって読み込むファイルを変える ———————————————————————-

次のコードで出来ました。

<?php if ( $_SERVER['SERVER_NAME'] == "example.com" ){
    include("/usr/home/xxxx/html/head.php");
} else {
    include("/usr/home/xxxx/virtual/test/head.php");
}
?>

各ファイルの中にドメイン名を書いてしまうと、ドメインが変更になった時に修正が大変。 何処か一箇所だけ書き換えれば済むような設計にしたい。

<!--<?

if( substr(dirname(FILE),0,30) == “/usr/home/xxxx/virtual/test” ) { $include_base =”/usr/home/xxxx/virtual/test”; } else { $include_base =”/usr/home/xxxx/html”; } include($include_base . “/common/share/header.php”); ?>–>

↑ 良くわかりませんが、上のような方法もあるようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です