这是确定网站是否在本地运行的最优雅方式吗?

时间:2017-03-27 09:34:57

标签: php xampp

我正在努力提高自己的技能。由于各种原因(包括数据库连接,调试输出等),我需要确定我的站点是在本地运行(XAMPP)还是远程运行。目前我这样做...... 确实有效

$root    = $_SERVER["DOCUMENT_ROOT"];
$baseurl = $_SERVER["SERVER_NAME"];
$parts   = explode("/",$root);
$base    = $parts[0];

if($base == "C:") {
 if(!defined('LOCAL')){
  define('LOCAL', true);
} else {
 if(!defined('LOCAL')){
  define('LOCAL', false);
};

...但我不禁觉得有一个更优雅的解决方案来检测本地与远程?

请记住,本地域永远不会只是“localhost” - 我有数百个本地站点都在XAMPP的虚拟主机中使用自己的域映射。

非常感谢你的建议。

2 个答案:

答案 0 :(得分:2)

如果部署到远程Windows服务器,不禁会觉得您当前的解决方案会中断。这绝对不是一个好习惯。 Laravel特别使用dotenv来解决这个问题,方法是在每台服务器上部署一个环境配置文件,并定义将要使用的基本常量。

例如,您可以在当地使用.env

APPLICATION_ENVIRONMENT=local

远程

APPLICATION_ENVIRONMENT=notlocal

然后你可以在启动时做:

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

然后您可以使用getenv获取值:

if(!defined('LOCAL')){
  define('LOCAL', getenv("APPLICATION_ENVIRONMENT") == "local");
};

答案 1 :(得分:2)

在flat-PHP中,我会使用$_SERVER['SERVER_ADDR']。使用XAMPP时,默认情况下,$_SERVER['SERVER_ADDR']::1

如果您在运行XAMPP的同一台计算机上进行编码,您还可以比较$_SERVER['SERVER_ADDR']$_SERVER['REMOTE_ADDR']