php目錄分隔符DIRECTORY_SEPARATOR


     在windows我們習慣性的使用“\”作為文件分隔符,但是在linux上系統不認識這個標識,於是就要引入這個php內置變量了:DIRECTORY_SEPARATOR

 
路徑分隔符
windows
\ or /
linux
/
 
 
 
 
   
      在 Windows 中,斜線( /)和反斜線( \)都可以用作目錄分隔符,在linux上路徑的分隔符是/,這就導致了一個問題,比如開發機器是windows,有一個圖片上傳程序,,而我們又使用了(\)作為文件分隔符,調試機器上指定的上傳文件保存目錄是:
define('ROOT', dirname(__FILE__)."\upload"),
在本地調試都很正常,但是上傳到linux服務器的時候會發現會出錯。
這個問題就是出在文件的 分隔符上,windows上習慣性的使用\作為文件分隔符,但是在linux上人家是不認識這個標識的,人家只認識/,於是就要引入下面這個 php內置 變量了:DIRECTORY_SEPARATOR。
上面的寫法可以改寫為以下無錯寫法:
define('ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR."upload");
這樣就可以確保不會出錯了。
例如discuz里面是這樣寫的:
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
回到問題本身上,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');  
?>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM