2014-06-07 26 views
0

目前我使用../創建一個目錄去退一萬步使用的mkdir

mkdir("../"."src/new"); 

這是做工精細,但這是任何其他辦法給出一個完整的路徑而不是使用../無處不在

+1

你的完整路徑是什麼? – fortune

+0

財富我正在使用'../'每個地方都不那麼好我只想問是否有任何其他解決方案可用,因爲有些時候我使用'../'和一些時間'../../' – user3713959

+0

我瞭解你的情況。下面的書面答案是這樣做的。 – fortune

回答

0

這是做工精細,但這是任何其他辦法給出一個完整的路徑,而 然後隨處使用../

是的。只要設置所謂的像在你的PHP $BASE_PATH一個PHP配置變量,然後前置一個到mkdir這樣的:

$BASE_PATH = '/full/path/to/your/codebase/here/'; 

如果您要確定您的網站的基本路徑是什麼,只是把此行的代碼在您網站的主要索引;如index.php

echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />"; 

然後加載該頁面。附近的某處頂部將是這樣的文字:

你的路徑是:/全/路徑/到/你/代碼庫/位置/

這將作爲基本路徑,以便你的代碼系統,你正在檢查這個。

然後可以採取$BASE_PATH設置,並將其放置在名爲local.php之類的PHP文件中。然後你只需要確保所有的PHP文件中有接近這樣的文件的頂部這樣一行:

require_once('local.php'); 

或者這樣:

require_once('../local.php'); 

或曾經這樣:

require_once('../../local.php'); 

是的,它似乎是你在mkdir交易../爲這在配置文件,但好處是你只需要設置那些require_once調用o在您的PHP文件中。一旦完成,您可以在一個地方更改$BASE_PATH &不必擔心。

而現在,當你在你的代碼使文件系統調用,這樣做:

mkdir($BASE_PATH . 'src/new'); 

是什麼樣的這樣一個設置好的是,你可以通過只改變$BASE_PATH使環境之間您的應用程序移植以符合您當地的環境。

if ($app_environment == 'local') { 
    $BASE_PATH = '/full/path/to/your/codebase/here/'; 
} 
else { 
    $BASE_PATH = '/var/www/your/remote/site/codebase/here/'; 
} 

有些人會聲稱$_SERVER["DOCUMENT_ROOT"]和這樣的工作,但現實就是這樣automatted方法起不到很好的形成服務器到服務器。行爲非常不一致。最好設置一個$BASE_PATH,然後使用它而不是摸索其他任何東西。

+0

在這種情況下,'$ app_environment'是什麼。如何找到$ BASE_PATH – user3713959

+0

是這個任何方式在PHP,可以自動檢測$ BASE_PATH無論我在本地或服務器 – user3713959

+0

@ user3713959'$ app_environment'在這種情況下只是一個簡單的開關,讓你知道你的程序是在什麼模式。只要定義'本地'到你的本地路徑,而'else'將是你的主要服務器路徑。確定'$ BASE_PATH'和手動設置一旦忘記它。你也許可以找出一些有創意的方法來確定你應該使用什麼'$ BASE_PATH',但正如我所說的,在我的經驗中,這個東西可能會讓人頭疼。所以最好手動設置它。查看我的最新編輯,我將解釋如何使用'realpath(dirname(__ FILE __))'來確定您的基本路徑。 – JakeGould

1

嘗試realpath。從docs

的realpath()擴展所有的符號鏈接並解決引用 「/./」中輸入路徑,「/../」以及多餘的「/」字符並返回 的規範化的絕對路徑名。

如果你希望你的當前目錄的父目錄,然後使用此:

//print out parent directory 
$parent = dirname(getcwd()); 
echo $parent; 
+0

是任何其他方式給我的項目的根,所以我只是使用'mkdir($ root。「src/new」)' – user3713959

+0

爲什麼不直接定義一個全局常量, '$ root'的路徑:http://www.php.net/manual/en/language.constants.syntax.php –

2

嘗試下面的一個。 getcwd()會給出物理路徑。

$path = getcwd().'your path'; 
0

你可以設置在包括在像$ FULLPATH所有頁面的頁面變量= $_SERVER["DOCUMENT_ROOT"]