是否可以将符号链接的文档根重写为其已解析的绝对路径?
换句话说,我们假设我有以下目录结构:
/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模块完成相同的工作。