🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

38049閲覧

PHPでローカルサーバーかを判定する

fuji_fe

総合スコア93

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

5クリップ

投稿2016/06/05 08:21

編集2016/06/08 13:49

開発環境(xamppなど)でのみ行いたい処理があります。

###試したこと
「$_SERVER['SERVER_NAME']がlocalhostであれば」
という条件で試しましたが、xamppのデフォルト設定以外の環境で動作しないため没にしました。

###補足情報
php5.2以降で動作させたいです

###追記
たくさんのご回答ありがとうございました
以下の処理にて解決しました!

php

1$S_AD = $_SERVER['SERVER_ADDR']; 2$R_AD = $_SERVER['REMOTE_ADDR']; 3 4//ローカルじゃなかったら 5if(substr($S_AD,0,mb_strrpos($S_AD,'.')) != substr($R_AD,0,mb_strrpos($R_AD,'.'))) 6exit(' 7<!DOCTYPE html> 8<html lang="ja"> 9<head> 10 <meta charset="UTF-8"> 11 <title>このサーバーではご利用できません</title> 12</head> 13<body> 14 <h1>このサーバーではご利用できません</h1> 15</body> 16</html> 17');
kei344👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

$_SERVER['SERVER_ADDR']の上位2つまたは3つが$_SERVER['REMOTE_ADDR']と合致したら
ローカル環境ではどうでしょうか。同じセグメントにいたらローカルという判定です。

投稿2016/06/07 03:18

pochi0701

総合スコア210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/07 03:27

この発想は面白いですね!
fuji_fe

2016/06/08 06:02 編集

ベストアンサーにさせて頂きました!! この発想は全く思いつきませんでした・・・非常に助かりました。 ありがとうございます!
guest

0

PHPからするとそれが開発環境か本番環境かを判別するという機能は存在しないかと思います。
既にお試しになっているように、開発環境の定義があいまいになりすぎるからです。

なので、一般的というかフレームワークの多くでは

設定ファイル(DB接続情報やFQDN等のデプロイ先によって変更が必要な情報が記載されているファイル)

定数やグローバル変数、コントローラ経由でグローバル的に扱える変数

デバッグモードであるかどうかのフラグを設定する
という方法が取られていますね。

投稿2016/06/05 08:45

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuji_fe

2016/06/05 08:51

回答ありがとうございます。 仰るとおりフラグなしでの実装が思いつかず 現在は下記のような仕様にしておりますが、 どうにか自動化できないものかと考えております。 $develop = true; // 本番ではfalse if($develop ....
tanat

2016/06/05 12:03

まずは 自動化とは何か と 本番環境とは何か を 明確にされるのがいいかと思いますよ。 例えば、本番環境にだけ特定のファイルを置いてその有無で判断する というのもソースコードレベルでは自動化になるでしょうが、デプロイ時には本番環境に設置する必要があります。これは想定される自動化にあたりますか? というような要求の掘り起こしをされてみては如何でしょうか。
guest

0

開発環境と本番環境ではURLのFQDNが違うはずですのでそこで判定してみてはいかがでしょうか?

投稿2016/06/05 08:27

oskbt

総合スコア1895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuji_fe

2016/06/05 08:32

回答ありがとうございます。 ローカル環境が異なる場合、ドメイン名やURLも異なってくるので難しいかと思うのですが・・・
oskbt

2016/06/05 08:38

本番環境のドメイン名は決まっていますか?でしたら、本番環境用ドメインかそれ以外かで判定できるはずです。 http://example.co.jp →本番 http://127.0.0.1 → example.co.jpじゃないから開発 http://localhost → example.co.jpじゃないから開発 http://example.local (hostsにて自PCを指定)→ example.co.jpじゃないから開発
fuji_fe

2016/06/05 08:46

情報不足で申し訳ございません。 とある機能の雛形で使用するため、テスト環境・本番環境のドメインは変動する前提です。 毎度ドメインを指定する手間をどうしても省きたく・・・
guest

0

こういうの?

PHP

1$c = getcwd(); 2$d = "xampp"; 3$pos = strpos($c,$d); 4if ($pos > 0){ 5//local 6}else{ 7//online 8}

投稿2016/06/06 13:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuji_fe

2016/06/08 06:04

ご回答ありがとうございます!! xampp環境であれば完璧です! ただ、他のローカルサーバを使用している場合を考慮し 上記の回答をベストアンサーとさせて頂きました!
guest

0

PHP

1if ($_SERVER['SERVER_ADDR'] == ローカルサーバーのIPアドレス) { 2 // 開発環境 3}

で、どうスかね。
あれなら先頭が '192' かで判断してもいいかも?

投稿2016/06/05 08:32

takasima20

総合スコア7460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuji_fe

2016/06/05 08:36

回答ありがとうございます。 IPで判定する発想はありませんでした! ただ、開発環境の違う不特定多数がプロジェクトに参加している前提だと難しいですよね・・・
takasima20

2016/06/05 08:54

「開発環境」を知りませんので、ローカルなIPアドレス (例えば 192.168.xxx.xxx)を使ってるかと思いまして。 単純には無理かもしれませんが、そのへんの情報を 総合すれば判断する条件にはなるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問