如何在没有硬编码绝对路径的情况下在.htaccess文件中指定auto_prepend_file?

时间:2011-06-15 18:44:33

标签: php apache .htaccess

我有一个我希望在每个请求开始时执行的PHP文件。我在我的htaccess文件中指定了他:

php_value auto_prepend_file "alwaysrunthis.php"

问题是,该指令的值是在目标脚本的上下文中执行的,而不是在.htaccess文件位置的上下文中执行的。因此,如果我正在执行的脚本与prepend文件位于同一目录中,则无效。

我意识到我可以使用绝对路径,但这不是很便携。我可以在.htaccess中访问任何变量来在执行时生成绝对路径吗?

1 个答案:

答案 0 :(得分:3)

简短回答,不。

多头回答,你可能会让它像你想要的那样工作。

您可以创建自动前置文件以使用$_SERVER['DOCUMENT_ROOT'] var来确定使用switch / if-else构造包含哪个文件。

或者您可以将__FILE__ var与realpath结合使用,以包含/要求所需的“前置”文件。

自动prepend.php
require_once(realpath(__FILE__) . '/prepend.php');

//编辑:
考虑到它,__FILE__可能会引用前置文件而不是请求的文件,因此它可能无法正常工作。