2012-12-07 74 views
13

使用__DIR____FILE__常量在符号链接情况下不起作用。这是什么解决方法?PHP __DIR__或__FILE__符号链接

例如:

我有一个文件:

/home/me/modules/myfile.php 

它被链接到:

/var/www/project/app/myfile.php 

/home/me/modules/myfile.php我需要包括位于/var/www/project

文件

编辑

对于使用realpath()的建议 - 不幸的是这不起作用。

var_dump(__DIR__); 
var_dump(realpath(__DIR__)); 

都返回完全相同的文件路径

+3

['真实路径()'](http://us3.php.net/manual/en/function.realpath.php) –

+0

奇,realpath()返回false,并且文件肯定存在 –

+0

_what_的'realpath()'返回false? 'realpath(__ DIR __)' –

回答

0

可以使用realpath()功能扩展符号链接。然而,我的建议是不使用这样的符号链接。 (将/var/www/project/app或相应的父目录添加到您的PHP包含路径中)。

+0

我害怕realpath不给我的符号链接位置 –

+0

['readlink()'](http://php.net/readlink)也许?如果不是,我很茫然。 – duskwuff

+1

@duskwuff请参阅http://stackoverflow.com/questions/13771021/php-dir-or-file-symlinked#comment18933995_13771021 OP要实时路径和readlink的相反效果 –

2

您是否尝试过以下方法?

dirname($_SERVER['SCRIPT_FILENAME'])

你的情况,这将返回:/var/www/project/app

+0

这应该是被接受的答案 –

+0

这只适用于假设PHP通过像Apache这样的Web服务器运行,而不是在命令行上运行。 – Greg

+0

不正确。无论您是否使用控制台的Web服务器,这都可以工作。它仍然通过Server/SAPI--就控制台而言,例如,它将通过fpm-cgi而不是apache-cgi。我已经测试过这个,'$ _SERVER ['SCRIPT_FILENAME']'绝对有效。 –