10年以上PHPやってるくせに最近知ったのでメモ
PHPで開発しててローカルのテスト環境と本番環境での振り分けをしたいのはよくあると思います。
割と王道なやり方は
php
if($_SERVER['SERVER_NAME']==="***.localhost")
等でしょうか。
これうっすらと気が付いてましたが、今回ちょっとトラブルになって調べました。
考えれば当たり前だったんですがCRONやforward等のApacheを経由しないPHP動作の際は取れない訳です。
$_SERVER自体が「WEBサーバーより情報を生成します」とあります。
ですので代替えを調べました。
execのやり方もあるようですがPHPではないですし、ちょっと邪道な気もしますので、
php
php_uname('n')
で、php_uname自体でPHPが動作しているPCの情報が取れ(OSやバージョンが取れます)
「n」パラメータでホスト名が取れる事がわかりました。
ドメイン返さないじゃん・・・と思いましたが、WEBサーバではない(Apacheではない)情報を返すので当たり前か。
当方でテストしたところ、
ローカル
$_SERVER['SERVER_NAME']→「****.localhost」
php_uname('n')→「PC名」
実際のレンタルサーバ上(ここではさくらインターネットのスタンダード)
さくら
$_SERVER['SERVER_NAME']→「ドメイン名」
php_uname('n')→「www***.sakura.ne.jp」
うん、コードはちょっと書き換える必要が出ますが、$_SERVERが使用できない場合はこれでいけそうです。