我需要在我网站的配置文件中检测不同的服务器环境。到目前为止,我只使用服务器的地址检测它们很好。
switch ( $_SERVER['SERVER_ADDR']){
case '127.0.0.1':
// stuff
break;
case '111.222.333.444';
// stuff
break;
}
但我现在需要针对SERVER_ADDR
和SERVER_NAME
测试我的环境。我没有php,所以我已经捅了
switch ( $_SERVER['SERVER_ADDR'] && $_SERVER['SERVER_NAME'] ){
case ('127.0.0.1','local'):
// stuff
break;
case ('111.222.333.444','gimmesomefunk.com');
// stuff
break;
}
但它显然是错的。有线索吗?
答案 0 :(得分:1)
如果您想继续使用switch
,则必须将两者合并为一个变量,如下所示:
switch (array($_SERVER['SERVER_ADDR'], $_SERVER['SERVER_NAME'])){
case array('127.0.0.1', 'local'):
// stuff
break;
case array('111.222.333.444', 'gimmesomefunk.com'):
// stuff
break;
}
但是,更常见的方法是使用if
,elseif
:
if ( $_SERVER['SERVER_ADDR'] == '127.0.0.1' && $_SERVER['SERVER_NAME'] == 'local' ) {
// stuff
} elseif ( $_SERVER['SERVER_ADDR'] == '111.222.333.444' && $_SERVER['SERVER_NAME'] == 'gimmesomefunk.com' ) {
// stuff
}
答案 1 :(得分:0)
我不确定这是最好的方法,但你可以连接这样的值:
switch ( $_SERVER['SERVER_ADDR'].$_SERVER['SERVER_NAME'] ){
case ('127.0.0.1local');
// stuff
break;
case ('111.222.333.444gimmesomefunk.com');
// stuff
break;
}
答案 2 :(得分:-1)
你不能这样做,因为你实际输入的switch
语句是一个布尔值(true
),因为你说的是“这是一个字符串真的,这个字符串truthy “:
var_dump($_SERVER['SERVER_ADDR'] && $_SERVER['SERVER_NAME']) // bool(true)
您只需使用if
语句执行以下操作(您不 使用$address
和$name
,但在我看来它变得更具可读性:)
$address = $_SERVER['SERVER_ADDR'];
$name = $_SERVER['SERVER_NAME'];
if ($address === '127.0.0.1' && $name === 'local') {
// Stuff
} else if ($address === '111.222.333.444' && $name === 'gimmesomefunc.com') {
// Other stuff
}