我有一个带有一些PHP文件的文件夹project2
,扩展了一些我作为符号链接添加到另一个文件夹project
的通用文件。例如:
project/index.php
project/config.php
project/templates/...
...
project2/project2_functions.php
project2/config.php
project2/index.php -> ../project/index.php
project2/templates/...
...
但是,如果我浏览project2/index.php
,它似乎使用project/config.php
并从project/templates/
等提供内容。看起来PHP甚至在设置工作目录之前解析了符号链接,用于传递内容并查找要包含的文件。然后将其设置为错误的位置。有没有办法绕过这种行为?
答案 0 :(得分:1)
这完全取决于您如何包含这些文件:
$ mkdir {a,b}
$ echo 'in A' > a/file
$ echo 'in B' > b/file
$ echo '<?php echo file_get_contents(__DIR__."/file"); echo file_get_contents("./file");' > a/idx.php
$ ln -s ../a/idx.php b/
$ cd a
$ php idx.php
in A
in A
$ cd ../b
$ php idx.php
in A
in B
请注意remark about __FILE__
(对__DIR__
也有效):
自PHP 4.0.2起, FILE 始终包含已解析符号链接的绝对路径,而在旧版本中,它在某些情况下包含相对路径。