我有一个使用shell_exec()
执行的PHP脚本。在脚本中,我需要检查脚本是在我的开发机器上运行(在Windows上使用WampServer)还是我的生产服务器(使用Linux),因为数据库凭证不同,脚本需要知道要使用哪组证书。如何区分通过shell执行的PHP脚本中的服务器?
由于脚本在shell中执行,因此未设置$_SERVER
变量,我无法通过此方法识别运行脚本的机器(这是我如何在其他脚本中执行的)。
如何确定脚本在通过shell执行时运行的服务器?
我有一个使用shell_exec()
执行的PHP脚本。在脚本中,我需要检查脚本是在我的开发机器上运行(在Windows上使用WampServer)还是我的生产服务器(使用Linux),因为数据库凭证不同,脚本需要知道要使用哪组证书。如何区分通过shell执行的PHP脚本中的服务器?
由于脚本在shell中执行,因此未设置$_SERVER
变量,我无法通过此方法识别运行脚本的机器(这是我如何在其他脚本中执行的)。
如何确定脚本在通过shell执行时运行的服务器?
在Linux机器上运行PHP 5.3,$_SERVER
在CLI定义。
尝试运行:
php -r "print_r(\$_SERVER);"
如果它不是在Windows中定义的,那么它是一个简单的方法来区分他们。
你是对的,'$ _SERVER'看起来是同时设置的,但是很奇怪,因为在CLI上查看变量是不同的(在Linux上,某些值缺失,而在其他窗口缺少其他值)。我不觉得其中的数据是可信的,因为它似乎根据操作系统而变化,谁知道还有什么。 – Nate 2014-10-08 20:18:02
我已经通过多种方式完成了这项工作,但是假设您拥有开发机器的控制权,您可以检查在您的LIVE服务器上不存在的环境变量,或者创建一个环境变量。例如: -
的环境变量添加到名为IAMDEV = 1的窗口,然后
<?php
if (get_env('IAMDEV') === FALSE) {
// we are LIVE
} else {
// we are DEV
}
?>
@RiggsFolly不,我想确定脚本时,它的执行*通过上运行的服务器的*命令行。 – Nate 2014-10-07 15:45:54
这会教会我正确地阅读这个问题。收回! – RiggsFolly 2014-10-07 15:47:54