0

我很困惑。我在 index.php 中设置了以下代码,以在 xampp 和服务器数据库配置文件之间自动切换:

define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development');

    echo 'SERVER_NAME  '.$_SERVER['SERVER_NAME']; // getting localhost
    echo 'env '.ENVIRONMENT; // getting production.

在本地的 Xampp 中,我认为这会导致使用 $_SERVER['SERVER_NAME']=localhost 将 ENVIRONMENT 常量设置为“开发”。有人介意解释我在这里做错了什么吗?

4

3 回答 3

3
define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development');

在这里,您正在比较isset()to的结果'my_domain_name.com';您正在将布尔值与字符串进行比较。

您要检查“$_SERVER['SERVER_NAME']设置且$_SERVER['SERVER_NAME']等于my_domain_name.com ”,如下所示:

define('ENVIRONMENT', (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'my_domain_name.com') ? 'production' : 'development');

(或者......只是完全删除isset()。)

于 2012-11-30T03:39:50.793 回答
1

在这种情况下你不需要使用isset(你知道它已经设置好了):

define('ENVIRONMENT', 
    ($_SERVER['SERVER_NAME']) == 'my_domain_name.com' ? 'production' : 'development'
);
于 2012-11-30T03:40:11.677 回答
0

试试这个:

define('ENVIRONMENT', ((isset($_SERVER['SERVER_NAME']) && ($_SERVER['SERVER_NAME']=='my_domain_name.com')) ? 'production' : 'development'));
于 2012-11-30T03:41:57.287 回答