Apache是​​否可以将文件mod_rewrite写入其绝对路径?

时间:2014-03-20 01:00:51

标签: php apache mod-rewrite

问题

是否可以将符号链接的文档根重写为其已解析的绝对路径?

换句话说,我们假设我有以下目录结构:

/www/current -> /www/tags/a
/www/tags/a
/www/tags/b

所以/ www / current是指向/ www / tags / a。

的符号链接

如果/ www / current是我的文档根目录,是否可以将文件路径重新写入/ www / tags / a,以便正在提供的文件不再遵循符号链接,而是在完全绝对的路径?请注意,我不询问FollowSymLinks 。我想实际上将服务文件重写为完整的绝对路径。


背景资料

所以你可能会问,我为什么要关心这个?

嗯,在提供PHP内容时,符号链接路径似乎存在问题。如果你使用符号链接作为部署过程的一部分,并在错误的时间翻转它,那么似乎Apache将实际读取前一个文件,然而PHP将使用已解析的新目录实例化__FILE__等魔术常量。

所以在我之前的例子中,这种竞争条件将如下所示:

1)Apache收到/www/current/myfile.php的请求 2)Apache / mod_php读取文件/www/tags/a/myfile.php 3)符号链接被翻到/ www / current - > / WWW /标签/ B 4)PHP现在解释并执行代码。它查找文件目录并将__FILE__解析为/ www / tags / b,这是错误的文件

这会导致各种各样的破坏,因为现在新代码将开始包含以前部署的文件。

我知道Etsy的人有written a module that seems designed to solve this very problem,但我想知道是否可以通过现有的apache模块完成相同的工作。

0 个答案:

没有答案