PHPの開発環境を簡単に用意する一つの案

多分、あんまり良い方法ではないと思いますが、一人で開発してますし、ローカル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]

こんな感じにしておくと、判断が要るときも使えるし、テスト環境はエラーを表示。本番ではしない。ってなります。すばらしい!

でも非推奨です

やっぱ、ローカルに作るのが基本だと思うので、あんまり勧められないです・・・

コメントを残す

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