2011-04-14 197 views
0

我有以下的包括文件..定義絕對路徑的文件

require_once ("config.php"); 
require_once ("functions.php"); 
require_once ("session.php"); 

我想定義爲我的包括文件的絕對路徑。我試着用下面的代碼,但沒有運氣..

你可以請幫忙定義一個合適的絕對路徑,以便require_once如預期。

defined('DS') ? null : define('DS',DIRECTORY_SEPARATOR); 
    defined('SITE_ROOT') ? null: define('SITE_ROOT',DS.'PHP_Files'. DS . 'phpsandbox'. DS.'my_mat'. DS.'my_test'); 
    defined('LIB_PATH')?null:define('LIB_PATH',SITE_ROOT.DS.'includes'); 

    require_once(LIB_PATH.DS."config.php"); 
    require_once(LIB_PATH.DS."functions.php"); 
    require_once(LIB_PATH.DS."session.php"); 

這些3包括在我的系統文件存儲在j:\ PHP_Files \ phpsandbox \ my_mat \ my_test \包括。

在此先感謝!

+0

可能重複[在PHP中創建絕對路徑的最佳方法? (見內部列出3種方法)](http://stackoverflow.com/questions/2893088/best-method-for-creating-absolute-path-in-php-see-3-methods-listed-inside) – ircmaxell 2011-04-14 15:21:01

+1

此外,不要濫用這樣的三元運算符。如果你必須做簡短的語法,用'OR'代替:'defined('DS')OR define('DS',DIRECTORY_SEPARATOR);' – ircmaxell 2011-04-14 15:29:47

+0

我是新來的php。所以我理解你的意思並不困難。如果你可以詳細解釋,這將是非常好的。我正在檢查是否定義了常數DS。如果它沒有定義,我正在定義它..如果有什麼不對的地方,我會很樂意學習 – satya 2011-04-14 15:34:43

回答

0

您需要realpath功能。此外,您可以獲得get_included_files包含的所有文件,該函數返回函數被調用時包含的文件的絕對路徑數組。

defined('DS') or define('DS',DIRECTORY_SEPARATOR); 
$disk_label = ''; 
if (PHP_OS == 'WINNT') { 
    if (FALSE !== ($pos = strpos(__FILE__, ':'))) { 
     $disk_label = substr(__FILE__, 0,$pos+1); 
    } 
} 
defined('SITE_ROOT') or define('SITE_ROOT', $disk_label.DS.'PHP_Files'. DS . 'phpsandbox'. DS.'my_mat'. DS.'my_test'); 
defined('LIB_PATH') or define('LIB_PATH',SITE_ROOT.DS.'includes'); 

require_once(LIB_PATH.DS."config.php"); 
require_once(LIB_PATH.DS."functions.php"); 
require_once(LIB_PATH.DS."session.php"); 
+0

更新我的答案 – Nemoden 2011-04-14 15:29:23

0

嘗試在您的包含路徑中包含您的LIB_PATH。

set_include_path(LIB_PATH . DS . PATH_SEPARATOR . get_include_path()); 
0
require_once(dirname(__FILE__).DS."config.php"); 
require_once(dirname(__FILE__).DS."functions.php"); 
require_once(dirname(__FILE__).DS."session.php"); 

檢查出來,我覺得這是很好的

1

好了,我知道你在尋找的是實際的系統文件的路徑。爲了讓您能呼應

dirname(__FILE__); 

您可以在任何你想要的文件,做到這一點,它會顯示路徑相對於你的文件系統中的文件。對於我來說,是這樣的:

/home2/myusername/public_html/project_name/includes/config.php 

所以,如果你有興趣在「PROJECT_NAME」文件夾,你應該有這樣的事情:

defined("SITE_ROOT") ? null : define("SITE_ROOT", DS . "home2" . DS . "myusername" . DS . "public_html" . DS . "project_name"); 

然後,如果你正在尋找的「包括」文件夾這將是你的圖書館你應該有這樣的事情:

defined("LIB_PATH") ? null : define("LIB_PATH", SITE_ROOT . DS . "includes"); 

希望這會有所幫助。我有完全相同的問題,這對我有用。

歡呼,Mihai Popa