脚本在哪里? Localhost还是在服务器上?

时间:2010-11-20 18:00:45

标签: php localhost

像许多程序员一样,我有一个托管脚本的服务器,以及我创建它们的本地主机。在PHP中是否有安全方式让脚本区分它们? SERVER_NAME有效,但可以注入,因此不是安全。有人有解决方案吗? (非静态溶液优选)

6 个答案:

答案 0 :(得分:2)

您可以使用php_uname('n')来返回当前主机的名称,并使用它来确定您所在的环境,但这对于简单地在配置文件中定义您的环境没有多大好处。每次安装只需执行一次。

我个人认为最简单的方法是在配置文件中将ENVIRONMENT符号定义为'development''testing''production',该文件从版本控制中排除。我将该文件包含在项目的某个部分中,然后assertENVIRONMENT符号定义。如果我检查了我的项目副本并忘记创建配置文件或指定其中的环境,程序将会显示。

您可以结合使用这些方法根据主机名定义ENVIRONMENT

答案 1 :(得分:0)

我倾向于检查$_SERVER['SERVER_ADDR']的IP,或者只是配置设置指示哪个是..

答案 2 :(得分:0)

通常在Apache中,每个VirtualHost都会为其定义一组特定的主机名和别名。这是您从$ _SERVER ['HTTP_HOST']中检索的名称,实质上是来自Host:HTTP标头的数据

您可能需要进一步检查的唯一情况是您的vhost是默认vhost,因此字段请求与主机vhosts无关的域,或者您的vhost使用通配符ServerName或{{3 }}

答案 3 :(得分:0)

这对我有用

if ($_SERVER['HTTP_HOST'] == 'localhost')
{
   // it is  local host
}

答案 4 :(得分:0)

在www之外的某处创建一个文件。做一个if(file_exists('你的文件路径'))...

给它一个奇怪的名字。在c:\如果你在Windows上或在/ usr / home /如果你在Linux上

答案 5 :(得分:0)

因为我的开发和生产路径总是不同,所以我通常会针对一系列可能的值检查dirname(__FILE__)

根据我最终得到的值,将加载正确的配置文件。