像许多程序员一样,我有一个托管脚本的服务器,以及我创建它们的本地主机。在PHP中是否有安全方式让脚本区分它们? SERVER_NAME有效,但可以注入,因此不是安全。有人有解决方案吗? (非静态溶液优选)
答案 0 :(得分:2)
您可以使用php_uname('n')
来返回当前主机的名称,并使用它来确定您所在的环境,但这对于简单地在配置文件中定义您的环境没有多大好处。每次安装只需执行一次。
我个人认为最简单的方法是在配置文件中将ENVIRONMENT
符号定义为'development'
,'testing'
或'production'
,该文件从版本控制中排除。我将该文件包含在项目的某个部分中,然后assert
将ENVIRONMENT
符号定义。如果我检查了我的项目副本并忘记创建配置文件或指定其中的环境,程序将会显示。
您可以结合使用这些方法根据主机名定义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__)
。
根据我最终得到的值,将加载正确的配置文件。