2011-06-30 50 views
3

我試圖確保我的文件路徑儘可能健壯,每個人都知道硬編碼路徑在很多情況下可能是災難性的。有關引用路徑的一般規則嗎?主要涉及$ _SERVER ['DOCUMENT_ROOT']的引用。PHP目錄經驗法則?

我一直在做../../(x100000),但它看起來很混亂,希望有一個更清潔的方式。

由於

+0

['realpath()'](http://php.net/manual/en/function.realpath.php)可以將相對變成絕對路徑,以防您正在尋找。 – hakre

回答

0

爲了得到行書我通常做的當前目錄:

str_replace('//', '/', str_replace('\\', '/', dirname(__FILE__) . '/')); 

這是哈克一點點,但它是可靠的AFAIK。

但我認爲它不會與Windows UNC paths(如果你使用它們)工作...

+0

'basename(getcwd());'... – Neal

+0

'basename(__ FILE __)'不會更好嗎? – Bojangles

+0

@JamWaffles我們希望路徑不是文件名...... __FILE__包含文件的完整路徑和文件名。 – AlexV

0

採取從笨框架(其處理相對路徑衆所周知的孔)的教訓。

您可以在索引文件來看看代碼:

https://github.com/philsturgeon/codeigniter-reactor/blob/master/index.php

你可以看到,有各種各樣的方式來處理這種情況(有些比別人更好),但該文件將向您展示最佳實踐。

+1

也許突出顯示您的答案中的相關位是有用的。 –

+0

你甚至看過檔案嗎? 90%的代碼正在確定適當的路徑。無視第31-47和201行...... – Swift

+1

當然,我每天都會使用CI。沒有必要陷入困境,我只是想通過指出相關部分來改進您的答案,而不是僅僅推遲其他地方的解決方案。 OP使用相對路徑,通過相對於某些文件或目錄指定源中的所有常量來定義絕對路徑。也許突出顯示用於定義它們的方法,以及如何在應用程序中使用它們。 –

2

爲了得到當前工作目錄:getcwd();

要獲得當期的目錄名稱:basename(getcwd());