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
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");
?>

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

スポンサードリンク

この記事が気に入ったら、ぜひシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。