多分、あんまり良い方法ではないと思いますが、一人で開発してますし、ローカルPCはWindowsしかないので、このやり方がとっても便利なんです。
テスト用にドメインをもう一つ取る
メインで稼動してる(または、させる予定の)ドメインとは別にもう一つドメインを取得して、サーバーに設定してしまいます。
たとえば、
- primarytext.jp (本番用)
- primarytext.com (テスト用)
こんな感じで取得して設定します。ドメインは年間1000円くらいなんで、まぁ良いかなぁと。で、テスト用のドメインの方には、.htaccessでBASIC認証でもかけて、自分しか見れないようにします。Googleとかの検索にもでなくなります。
以上で、終わりです。
ローカルで書いたコードをFTPでUPして、テスト用ドメインで見るだけです。なんて簡単!
この方法の良いところ
本番環境とまったく同じです。サーバーもOSもPHPもDBも回線もなにもかも、まったく同じです。
なので、やっぱこのコードでは遅いなぁとか、分かります。HTMLをUPして確認もできるので、画像を読み込みすぎてるとか、javascriptが遅いとか、別サーバーと通信してタイムアウトになっちゃうとか、わかります。良いね!
テストデータが不要です。同じDBが使えますので、本番環境で使ってるデータを流用できます。逆も簡単。バージョンアップで初期データが要るときも、テスト環境からコピーできます。
DBはスキーマで分ける
同じDBへアクセスしますが、テスト環境と本番環境ではTable構造が違ったりしても大丈夫です。
たとえば、postgreSQLなら、初期で「public」スキーマできるので、これを本番用。「test」ってスキーマ作ってテスト用にすれば、同じTABLE名でも中身違ったものにできます。
[sql] SET search_path = test;[/sql]
ってすれば、testへ繋ぎます。しなければ、初期値のpublicを見に行きます。これをDBを使う最初にやれば、SQL等を分ける必要ないです。
本番環境が稼動してなくて、初めて公開するときは、
[sql] SELECT * INTO public FROM test LIMIT 0;[/sql]
ってやると、スキーマをまるごとコピーできます。
判断するコードを最初に読み込む
全部のPHPから、一番最初に、
[php] if (strpos($_SERVER[‘PHP_SELF’],”primarytext.com”) === FALSE) {ini_set(‘display_errors’,FALSE);
define(‘pT_NowTestMode’,FALSE);
} else {
ini_set(‘display_errors’,TRUE);
define(‘pT_NowTestMode’,TRUE);
}
[/php]
こんな感じにしておくと、判断が要るときも使えるし、テスト環境はエラーを表示。本番ではしない。ってなります。すばらしい!
でも非推奨です
やっぱ、ローカルに作るのが基本だと思うので、あんまり勧められないです・・・