修复 IIS 和 PHP 变量——自己设置 $_SERVER[‘REQUEST_URI’]

在我的编程生涯大约 8 个月后,我需要编写内容管理系统 (CMS) 代码。在我职业生涯的早期,这是一个相当大的挑战,但我做到了。前端是项目中最简单的部分——大量快速的 SQL 查询,用于将介绍和结论引入由于 PHP 编程而需要静态的页面,一个子导航构建器(菜单存储在数据库中),以及通常的永久形式。

该项目最耗时的部分是创建一个管理面板。管理面板需要高度灵活和便携,以便它可以用于其他项目。最后,管理小组的框架对于自那个项目以来的所有项目都是完美的。我们不断添加模块,以节省时间并留出时间进行更多前端编程。

但是,对于那个特定的项目,我们遇到了一个我们没有预见到的问题。 — 客户通知我们需要在 IIS 服务器上托管网站。这不是什么好消息,但我们知道 IIS 将支持 PHP,所以我们没有恐慌。我遇到的最大问题是 IIS 不支持 PHP 的 $_SERVER[‘REQUEST_URI’] 变量,更糟糕的是直到启动时我才知道这一点。

我在整个管理面板中使用了 $_SERVER[‘REQUEST_URI’]。网站的每个“页面”都通过 index.php 运行以提供 MVC 功能。这样做使我需要使用自引用 $_SERVER[‘REQUEST_URI’] 变量,因为它为我提供了在文件中保持位置所需的所有重要查询字符串变量。

我如何解决这个问题?其实很简单:

if (!isset($_SERVER['REQUEST_URI']))
{
       $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'],1 );
       if (isset($_SERVER['QUERY_STRING'])) { $_SERVER['REQUEST_URI'].='?'.$_SERVER['QUERY_STRING']; }
}

这对大多数人来说似乎简单明了,但当时我还是个新手。希望这可以帮助人们节省大量时间!

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏