2014-10-07 49 views
0

我有一个使用shell_exec()执行的PHP脚本。在脚本中,我需要检查脚本是在我的开发机器上运行(在Windows上使用WampServer)还是我的生产服务器(使用Linux),因为数据库凭证不同,脚本需要知道要使用哪组证书。如何区分通过shell执行的PHP脚本中的服务器?

由于脚本在shell中执行,因此未设置$_SERVER变量,我无法通过此方法识别运行脚本的机器(这是我如何在其他脚本中执行的)。

如何确定脚本在通过shell执行时运行的服务器?

+0

@RiggsFolly不,我想确定脚本时,它的执行*通过上运行的服务器的*命令行。 – Nate 2014-10-07 15:45:54

+0

这会教会我正确地阅读这个问题。收回! – RiggsFolly 2014-10-07 15:47:54

回答

1

你可以简单地看一下服务器的主机名:

<?php 

$hostname = php_uname('n'); 
+0

好主意,这个既适用于Windows也适用于Linux。我做了一些搜索,发现了一个更简洁的命令:'php_uname('n');'。我不认为这将有不同的服务器具有相同的主机名(例如,如果使用负载平衡?),但为我的目的,我认为它会正常工作。 – Nate 2014-10-08 20:19:47

+1

这确实是更好的方法,我已经更新了我的答案。 – naneau 2014-10-10 13:32:42

1

在Linux机器上运行PHP 5.3,$_SERVER在CLI定义。

尝试运行:

php -r "print_r(\$_SERVER);" 

如果它不是在Windows中定义的,那么它是一个简单的方法来区分他们。

+0

你是对的,'$ _SERVER'看起来是同时设置的,但是很奇怪,因为在CLI上查看变量是不同的(在Linux上,某些值缺失,而在其他窗口缺少其他值)。我不觉得其中的数据是可信的,因为它似乎根据操作系统而变化,谁知道还有什么。 – Nate 2014-10-08 20:18:02

0

我已经通过多种方式完成了这项工作,但是假设您拥有开发机器的控制权,您可以检查在您的LIVE服务器上不存在的环境变量,或者创建一个环境变量。例如: -

的环境变量添加到名为IAMDEV = 1的窗口,然后

<?php 
    if (get_env('IAMDEV') === FALSE) { 
     // we are LIVE 
    } else { 
     // we are DEV 
    } 
?> 
相关问题