使apache向PHP发送错误的服务器名称

使apache向PHP发送错误的服务器名称,php,apache,Php,Apache,有人知道有没有一种方法可以将PHP发送一个不同的$\u SERVER['SERVER\u NAME']值给实际用于调用Apache的服务器?也就是说:如果用户在浏览器的URL栏中键入dev.mydomain.com,它会到达正确的IP地址,但会告诉PHP服务器名是live.mydomain.com?我在谷歌上搜索过这个,但什么也没找到 “我为什么要这样做?”我听到你问 我继承了一个大型PHP系统,它根据用于调用系统的域名做出许多决策。域名有时是硬编码的,有时存储在数据库中 我现在需要创建一个独立

有人知道有没有一种方法可以将PHP发送一个不同的
$\u SERVER['SERVER\u NAME']
值给实际用于调用Apache的服务器?也就是说:如果用户在浏览器的URL栏中键入
dev.mydomain.com
,它会到达正确的IP地址,但会告诉PHP服务器名是
live.mydomain.com
?我在谷歌上搜索过这个,但什么也没找到

“我为什么要这样做?”我听到你问

我继承了一个大型PHP系统,它根据用于调用系统的域名做出许多决策。域名有时是硬编码的,有时存储在数据库中

我现在需要创建一个独立于活动环境的开发环境。我可以搜索和替换所有这些域名,但我有两个环境的不同代码,以及代码版本控制问题

请注意

我不需要用户黑客或伪造任何东西,因此没有安全问题。作为站点管理员,我希望Apache和PHP使用不同的域名

以下“解决方案”不是我要问的

ServerAlias:否。Apache仍然向代码发送错误的域名

重定向:只会将请求发送到错误的服务器

黑客攻击客户机的主机文件:当然我可以在自己的机器上这样做,但是一些“技术上幼稚”的人在他们的机器上没有管理员权限,也需要测试开发站点。他们需要记住在完成测试时将其更改回原处。这将变得行不通


有什么想法吗?

然后,在发帖30秒后,我对自己说:“等等。。。您尚未尝试
ModRewrite
。我现在把问题留在这里。我可以得到其他有用的反馈

在互联网上又搜索了3个小时后,我终于找到了答案。我将把它放在这里,让下一个人来研究如何做到这一点

第一件事
ModRewrite
不是答案!当Apache处理其
ModRewrite
SetEnv
设置时,
SERVER\u NAME
和“HTTP\u HOST”变量已经一成不变。您可以尝试重置它们,但您的PHP永远不会看到更改的值

PHP的auto_prepend选项起作用。如何设置取决于您的PHP设置,但标志如下:

auto\u prepend\u file=prepend.php

然后在文档根目录中创建
prepend.php
文件:



它甚至可以在Symfony中使用。您所要做的就是确保
prepend.php
文件不在主存储库中。

您是否尝试在php中覆盖该变量?i、 e.在第一个php文件的顶部:
$\u SERVER['SERVER\u NAME']=“live.mydomain.com”
(当然,您必须决定何时覆盖变量并处理此情况)@RaphaelMüller这确实是一个选项,但我最终还是会再次使用拆分的代码基。此外,该系统还使用了巨大的Symfony框架,我必须侵入该框架:-(就我个人而言,我使用一个可选的配置文件,它只有在存在时才使用。代码库本身保持不变,您可以在这个特殊的文件中做一些事情。如果您在symfony框架的引导程序之前加入此内容,您应该会做得很好。@RaphaelMüller您的回答对我来说是一个很好的起点,但我必须做更多的工作来实现它。)让它工作起来。下面的详细信息!很好的一个。你能为不同的域预编多个文件吗?或者你每次都使用相同的php文件吗?@RaphaelMüller:我会为几个域使用相同的php文件,但是没有理由有人不能在预编文件中包含多个php文件。