2

我有一个project2包含一些 PHP 文件的文件夹,扩展了一些我作为符号链接添加到另一个文件夹的通用文件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/etc 的内容。看起来 PHP 甚至在设置工作目录之前就在一定程度上解析了符号链接,该工作目录用于传递内容并查找要包含的文件。然后将其设置为错误的位置。有没有办法规避这种行为?

4

1 回答 1

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

请注意关于__FILE__(也适用于__DIR__)的注释:

自 PHP 4.0.2 起,FILE始终包含一个绝对路径,其中符号链接已解析,而在旧版本中,它在某些情况下包含相对路径。

于 2013-06-05T17:54:47.957 回答