在windows我們習慣性的使用“\”作為文件分隔符,但是在linux上系統不認識這個標識,於是就要引入這個php內置變量了:DIRECTORY_SEPARATOR
路徑分隔符
|
|
windows
|
\ or /
|
linux
|
/
|
在 Windows 中,斜線(
/)和反斜線(
\)都可以用作目錄分隔符,在linux上路徑的分隔符是/,這就導致了一個問題,比如開發機器是windows,有一個圖片上傳程序,,而我們又使用了(\)作為文件分隔符,調試機器上指定的上傳文件保存目錄是:
在本地調試都很正常,但是上傳到linux服務器的時候會發現會出錯。
這個問題就是出在文件的
分隔符上,windows上習慣性的使用\作為文件分隔符,但是在linux上人家是不認識這個標識的,人家只認識/,於是就要引入下面這個
php內置
變量了:DIRECTORY_SEPARATOR。
上面的寫法可以改寫為以下無錯寫法:
這樣就可以確保不會出錯了。
例如discuz里面是這樣寫的:
回到問題本身上,DIRECTORY_SEPARATOR是一個返回跟操作系統相關的路徑
分隔符的
php內置命令,在windows上返回\,而在linux或者類unix上返回/,就是這么個區別,通常在定義包含文件路徑或者上傳保存目錄的時候會用到。
使用實例:
<?php include('smarty/Smarty.class.php'); //程序目錄 const DIR_SEP = DIRECTORY_SEPARATOR; define('SITE_ROOT', dirname(__FILE__).DIR_SEP); $smarty = new Smarty; $smarty->template_dir = SITE_ROOT.'templates'.DIR_SEP; $smarty->complie_dir = SITE_ROOT.'templates_c'.DIR_SEP; $smarty->config_dir = SITE_ROOT.'configs'.DIR_SEP; $smarty->cache_dir = SITE_ROOT.'cache'.DIR_SEP; $smarty->assign('world','hello world!'); $smarty->display('index.htm'); ?>