概要
PHPのレガシーコードで環境判定にApacheの定数を使っていることがあるので、
Docker環境でもそのスクリプトがそのまま動くよう環境設定を行うことが
ときどきあるのでメモとして残しておきます。
Dockerの設定
docker-compose.ymlの例を記載します。
開発環境の例)
docker-compose.yml
version: '2'
services:
httpd:
image: httpd:2.4
container_name: 'httpd'
command: /usr/local/apache2/bin/httpd -DFOREGROUND -DDev
ports:
- '80:80'
- '443:443'
※ 開発以外の環境は、「 -DDev
」を「 -DTest
」や「 -DProd
」に変更する
環境判定
.htaccessで判定する例を記載しておきます。
.htaccess
<IfDefine Dev>
# 開発環境
SetEnv APP_ENV development
</IfDefine>
<IfDefine Test>
# テスト環境
SetEnv APP_ENV testing
</IfDefine>
<IfDefine Prod>
# 本番環境
SetEnv APP_ENV Production
</IfDefine>
phpでの判定例を記載しておきます。
environment.php
<?php
switch (getenv('APP_ENV')) {
case 'development':
echo '開発環境';
break;
case 'testing':
echo 'テスト環境';
break;
case 'production':
echo '本番環境';
break;
default:
throw new ErrorException('環境を判定できません');
}