PHP如何区分正式、生成和测试环境

bloger 2020-07-28 PM 441℃ 0条

日常开发中区分环境的重要性不言而喻;

重点是根据环境加载不同环境的配置文件(数据库、redis、三方接口等);

如果维护同一个文件很容易操作失误导致正式与测试数据混淆;

有很多吃过大亏的小伙伴就是因为没有区分环境;

一个简单的方法来区分正式、测试和生产;
u=535159045,3407191395&fm=26&gp=0.jpg
【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 变量名 变量值


<VirtualHost *:80>
    DocumentRoot "your path"
    ServerName admin.your-domain.com
    ServerAlias 
  <Directory "your path">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
      SetEnv ENVIRON dev
  </Directory>
</VirtualHost>

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');
}
标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~