1

如果存在这样的东西,我真的会感到惊讶,但我找不到任何与我的 Google-fu 相关的东西。

我在require_once()我网站的每个页面上都包含一个 PHP 文件。该文件是一个轻量级的定制框架。

我想知道是否可以删除整require_once()行,并通过使用另一种晦涩的机制,将库包含在指定文件夹中每个文件的开头。

这背后的原因是该特定文件夹中的文件将被编码知识有限的人修改,我不希望他们搞砸 PHP 行,认为它们并不重要。

编辑:该库将最终分发,旨在用于典型的 PHP 安装。

谢谢!

4

2 回答 2

3

我觉得另一种技术不那么晦涩难懂,那就是auto_prepend_file将对该文件夹的所有请求首先重定向到一个文件,然后加载库,然后加载您将让这些其他用户修改的文件。

以下是我使用您的重写代码解析此类事情的方式...如果 htaccess 文件与文件夹位于同一目录中,我认为重写规则将如下所示: RewriteRule ^(.*)$ index.php/$1 [L]

在 index.php 文件中,我通常会为站点加载某种配置,然后进行委派。我在这里使用这个函数来获取当前的 url...我不完全确定它是否是矫枉过正,但它在多个平台上对我来说一直有效。

function get_current_url() {
 $pageUrl = 'http';
 if (@$_SERVER["HTTPS"] == "on") {$pageUrl .= "s";}
 $pageUrl .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageUrl .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageUrl .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }

 return $pageUrl;
}

然后,您基本上可以使用 php 的parse_url()函数解析 get_current_url() 的结果并进行适当的委派。

于 2012-07-15T17:17:57.723 回答
2

是的,这是很有可能的,使用php.ini指令auto_prepend_file

因此,例如,在适当的 .htaccess 文件中:

php_flag auto_prepend_file header.php
于 2012-07-15T17:14:55.090 回答