2012-12-07 76 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']'絕對有效。 –