日常开发中区分环境的重要性不言而喻;
重点是根据环境加载不同环境的配置文件(数据库、redis、三方接口等);
如果维护同一个文件很容易操作失误导致正式与测试数据混淆;
有很多吃过大亏的小伙伴就是因为没有区分环境;
一个简单的方法来区分正式、测试和生产;
【Nginx】
在配置环境server段location中添加相应的配置信息(fastcgi_param ENVIRON ):location ~ \.php($|/) {
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param ENVIRON 'pro'; # PRO or DEV
}
【Apache】
SetEnv 变量名 变量值
DocumentRoot "your path"
ServerName admin.your-domain.com
ServerAlias
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
SetEnv ENVIRON dev
php中获取环境变量即可:var_dump(getenv('ENVIRON '));
当然还有其它的方法、比如获取服务器名称<?php
$host_name = gethostname();
if (in_array($host_name, ['VM_48_39_centos'])) {
define('LIB_ENV', 'pro');
}else if (in_array( $host_name, ['10-9-115-74'])) {
define('LIB_ENV', 'test');
}else {
define('LIB_ENV', 'dev');
}