php文件目錄分隔符Windows與linux兼容的問題


再這兩個系統中,Windows的分隔符是“\”,linux是“/”,所以在文件目錄匹配的時候可能會遇到系統不兼容出錯,所以一般定義目錄分隔符使用如下php常量:DIRECTORY_SEPARATOR

  在 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上返回/,就是這么個區別,通常在定義包含文件路徑或者上傳保存目錄的時候會用到。



免責聲明!

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



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