自定判断代码的执行环境
web程序的开发一般经历三个环境 开发(DEBUG)、测试(LAUNCHING)、生产(ONLINE)
如何来自动区分三个环境呢?
代码一般有两种执行方式 cgi、cli
1、对于cgi可以在web服务器中设置参数,然后在 php中用 $_SERVER 来获取
nginx:
apache
php代码中判断
if(isset($_SERVER['debug'])) { define('DEBUG', true); echo 'DEBUG'; }elseif(isset($_SERVER['launching'])){ define('LAUNCHING', true); echo 'LAUNCHING'; }else{ define('ONLINE', true); echo 'ONLINE'; }
2、对于cli可以讲变量放到php.ini中,然后用 parse_ini_file 函数来解析(注:ini_get 是获取不到自定义在php.ini中的下标的)
示例:
php.ini中
[env] launching=true ;true或On(on不区分大小写)获取后都是字符串1 debug=true online=true
php代码中
//获取加载的php文件路径 $ini_path = php_ini_loaded_file(); $ini_vars_arr = parse_ini_file($ini_path, true); eee($ini_vars_arr['env']); if(!empty($ini_vars_arr['env']['debug'])) { define('DEBUG', true); echo 'DEBUG'; }elseif(!empty($ini_vars_arr['env']['launching'])){ define('LAUNCHING', true); echo 'LAUNCHING'; }else{ define('ONLINE', true); echo 'ONLINE'; }
其他方式
思想:根据服务器的某些特征信息,如IP 等信息区分
或者读取一个脱离框架的固定位置的文件(如 php.ini中)