アーカイブ

‘PHP’ タグのついている投稿

PHPのテスト環境を簡単に用意する一つの案

2011 年 4 月 14 日 コメントはありません

多分、あんまり良い方法ではないと思いますが、一人で開発してますし、ローカルPCはWindowsしかないので、このやり方がとっても便利なんです。

テスト用にドメインをもう一つ取る

メインで稼動してる(または、させる予定の)ドメインとは別にもう一つドメインを取得して、サーバーに設定してしまいます。

たとえば、

  • primarytext.info (本番用)
  • primarytext.com (テスト用)

こんな感じで取得して設定します。ドメインは年間1000円くらいなんで、まぁ良いかなぁと。で、テスト用のドメインの方には、.htaccessでBASIC認証でもかけて、自分しか見れないようにします。Googleとかの検索にもでなくなります。

以上で、終わりです。

ローカルで書いたコードをFTPでUPして、テスト用ドメインで見るだけです。なんて簡単!

この方法の良いところ

本番環境とまったく同じです。サーバーもOSもPHPもDBも回線もなにもかも、まったく同じです。

なので、やっぱこのコードでは遅いなぁとか、分かります。HTMLをUPして確認もできるので、画像を読み込みすぎてるとか、javascriptが遅いとか、別サーバーと通信してタイムアウトになっちゃうとか、わかります。良いね!

テストデータが不要です。同じDBが使えますので、本番環境で使ってるデータを流用できます。逆も簡単。バージョンアップで初期データが要るときも、テスト環境からコピーできます。

DBはスキーマで分ける

同じDBへアクセスしますが、テスト環境と本番環境ではTable構造が違ったりしても大丈夫です。

たとえば、postgreSQLなら、初期で「public」スキーマできるので、これを本番用。「test」ってスキーマ作ってテスト用にすれば、同じTABLE名でも中身違ったものにできます。

SET search_path = test;

ってすれば、testへ繋ぎます。しなければ、初期値のpublicを見に行きます。これをDBを使う最初にやれば、SQL等を分ける必要ないです。

本番環境が稼動してなくて、初めて公開するときは、

SELECT * INTO public FROM test LIMIT 0;

ってやると、スキーマをまるごとコピーできます。

判断するコードを最初に読み込む

全部の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);
}

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

でも非推奨です

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

カテゴリー: サーバー, プログラム タグ: ,

PHPer的にPostgreSQLが使えるサーバーカウボーイを試用してみた

2011 年 3 月 4 日 コメントはありません

先週なんですが、新しいレンタルサーバーを借りようと移転先をいろいろ探してて、ツイートしてたら良さそうなサーバーを教えてもらったので使ってみました。サーバーカウボーイ です。

サーバーカウボーイはいかがでしょうか??http://bit.ly/e9qJTo RT @PrimaryText: 共有のレンタルサーバーだと、postgreSQLが使えるとこ、すごく少ない。Wed Feb 23 05:12:19 via Echofon

こっから始まりました。

サーバーカウボーイの特徴

一般的な特徴はサーバーカウボーイへ直接行って見てください。僕的に惹かれたのが、

  • 安い(年契約で月416円)
  • マルチドメイン無制限
  • 運営会社がファーストサーバーで安心かも
  • PHP 5.2.x が使える
  • PostgreSQL 8.1.x が使える
  • 管理画面Plekなんで分かりやすい

ってあたりです。

PHP + PostgreSQL

この組み合わせが使える共有サーバー、ほとんどありません。日本のレンタルサーバー会社さんはほとんどMySQL一本(SQLiteもあるけど)です。

さらに、PHP5.2系ってのがすばらしい。これも珍しいです。多いのはPHP5.1系です。CentOSのデフォルトが5.1系みたいなので、そーなるんでしょうか?

PHP5.2系のメリットはなにかというと、json_decode が標準で使えることです。ウェブサービスAPI系使うならほぼ必須的な関数なので、ぜひ欲しいです。

.htaccessにハマる

で、いつもPHPで組むときはPHPの設定を変更します。エラー表示、文字コード、言語初期値とか。VPSだとphp.iniを編集できます。レンタルサーバーでも適用できるとこあります。でも、サーバーカウボーイは出来ないみたいでした。

サーバーカウボーイ、PHPの設定変更ができない。残念だなぁ。ini_set で回避するか・・・Wed Feb 23 05:59:05 via HootSuite

ってツイートして、この段階でもうやめようかと思ったんですが・・・

@PrimaryText ご利用ありがとうございます。.htaccessは使えるので試してみてください。 RT サーバーカウボーイ、PHPの設定変更ができない。残念だなぁ。ini_set で回避するか・・・Wed Feb 23 08:08:00 via web

っとお返事をもらいましたので、ちょっと元気でてやって見ました!が、やっぱ無理ですた。

サーバーカウボーイの設定中ですが、htaccessは使えるのでPHP設定を変更しようとやってます。が、うまくいかないので・・・ふと思ったんですが、PHPがCGIで動くということは、htaccess で php_value とかやっても無理なんじゃないのか?っと。Thu Feb 24 06:23:19 via HootSuite

そうです。PHPがApacheモジュールで動いてません。ので、.htaccessからは設定変更できないですよ!あーあ。って言ってたら、

@PrimaryText おっしゃるとおりです。。ini_setをご利用ください。ご案内が足りずにすみませんm(__)m  RT サーバーカウボーイの設定中ですが、htaccessは使えるのでPHP設定を変更しようとやってます。が、うまくいかないので・・・ふと思ったんですが、Thu Feb 24 09:22:03 via web

とご丁寧にお返事もらいました。サーバーカウボーイさんのツイッター担当さんは、すごく良い人です!

ini_set()ではダメな理由

はっきり言って・・・ただのコダワリです。

E_STRICT レベルのエラーを開発時は表示したいです。が、これは、最初(コンパイル前)からやっとかないと無理です。

PHP: error_reporting – Manual

ほとんどの E_STRICT レベルのエラーは スクリプトのコンパイル時に発生します。そのため、 error_reporting で E_STRICT を含むように設定されている環境では これらのエラーを検出できません (逆も同様です)。

ってマニュアルにも書いてます。

まとめ

すいません、いろいろ教えてもらったんですが、結局、サーバーカウボーイさんはやめました。そのコダワリのためだけにですけど・・・

なので、どうしても.htaccessでPHP設定を変更したいっていうのが無い人でpostgreSQLを使いたい方にはすごく良いと思います~。ツイッターでもこんな感じなんで、多分、サポートも良いと思いますよ。



カテゴリー: サーバー タグ: