PHP getcwd() 解析符号链接的目标而不是当前目录

12
据我所知,PHP的getcwd()(以及类似的函数,如dirname(__FILE__))应该返回正在执行文件的当前目录。
如果当前目录恰好是另一个目录的符号链接,则PHP(可能与Apache一起)应该返回显示符号链接名称作为您所在的“目录”的路径。
例如:
from /var/www,
directory 'one' contains index.php
symlink 'two' points at directory 'one'

one/index.php: <?php echo getcwd(); ?>

在浏览器中访问http://localhost/two/index.php,显示的是/var/www/one

我期望它应该显示/var/www/two

请问这是可以通过更改PHP或Apache设置来实现吗?还是我无法以这种方式使用符号链接?


1
你解决了吗?我对这个相同的用例很感兴趣。 - kalenjordan
Apache是否配置为遵循符号链接?例如 Options FollowSymLinks - Jérôme Mahuet
我认为这与Apache无关。这是PHP的“特性”。如果您在命令行中输入以下内容:mkdir a; ln -s a b; php -r 'chdir( "b" ); echo getcwd();',PHP将向您显示您位于名为“a”的目录中,即使您已经使用chdir()进入了“b”目录。 - edam
1个回答

12

好的,弄清楚了。在浏览器上使用$_SERVER['SCRIPT_FILENAME']。在命令行上,您可以使用exec("pwd")获取当前符号链接目录


仅获取目录,不包括文件名:dirname($_SERVER['SCRIPT_FILENAME']); - Cesar Devesa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接