五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > php內(nèi)置常量DIRECTORY_SEPARATOR用法

php內(nèi)置常量DIRECTORY_SEPARATOR用法

文章來源:365jz.com     點擊數(shù):343    更新時間:2018-11-03 16:29   參與評論

目錄分隔符,是定義php的內(nèi)置常量。在調(diào)試機器上,在windows我們習(xí)慣性的使用“\”作為文件分隔符,但是在linux上系統(tǒng)不認(rèn)識這個標(biāo)識,于是就要引入這個php內(nèi)置常量了:DIRECTORY_SEPARATOR

php的內(nèi)置常量DIRECTORY_SEPARATOR是一個顯示系統(tǒng)分隔符的命令,DIRECTORY_SEPARATOR是php的內(nèi)部常量,不需要任何定義與包含即可直接使用。

DIRECTORY_SEPARATOR是一個顯示系統(tǒng)分隔符的命令,DIRECTORY_SEPARATOR是PHP的內(nèi)部常量,不需要任何定義與包含即可直接使用。
眾所周知,在windows下路徑分隔符是(當(dāng)然/在部分系統(tǒng)上也是可以正常運行的),在linux上路徑的分隔符是/,這就導(dǎo)致了一個問題,比如開發(fā)機器是windows,有一個圖片上傳程序,調(diào)試機器上指定的上傳文件保存目錄是:define(‘ROOT’, dirname(FILE).”upload”),在本地調(diào)試都很正常,但是上傳到linux服務(wù)器的時候會發(fā)現(xiàn)會出錯。
這個問題就是出在文件的分隔符上,windows上習(xí)慣性的使用作為文件分隔符,但是在linux上人家是不認(rèn)識這個標(biāo)識的,人家只認(rèn)識/,于是就要引入下面這個php內(nèi)置變量了:DIRECTORY_SEPARATOR。
上面的寫法可以改寫為以下無錯寫法:
define(‘ROOT’, dirname(FILE).DIRECTORY_SEPARATOR.”upload”);
這樣就可以確保不會出錯了。
例如discuz里面是這樣寫的:define(‘S_ROOT’, dirname(FILE).DIRECTORY_SEPARATOR);
回到問題本身上,DIRECTORY_SEPARATOR是一個返回跟操作系統(tǒng)相關(guān)的路徑分隔符的php內(nèi)置命令,在windows上返回,而在linux或者類unix上返回/,就是這么個區(qū)別,通常在定義包含文件路徑或者上傳保存目錄的時候會用到。


1

2

require_once dirname(FILE).DIRECTORY_SEPARATOR . './../../../wp-config.php';

require_once dirname(FILE).DIRECTORY_SEPARATOR.'inc/options.php';

這兩句PHP代碼,為什么前面部分用DIRECTORY_SEPARATOR,而后面部分卻用"/"呢
眾所周知,windows下的是\和/,而LINUX下的是/

在程序本地運行很正常,上傳到服務(wù)器后,發(fā)現(xiàn)圖片沒有顯示出來,圖片鏈接是絕對路徑 var/,而且當(dāng)中帶有 \ 但是我記得這個路徑已經(jīng)處理成相對路徑的

1

2

3

4

$path    = dirname(dirname(dirname(FILE))).'\\';

$search = array( $path, '\\');

$replace = array( '', '/');

return str_replace($search,$replace,$this->tempfolder).$this->filename_prefix.$public.'.jpg';

第一行代碼的用在LINUX "\\", 就不行。

解決的辦法是 用PHP 預(yù)定義常量DIRECTORY_SEPARATOR來代替'\','/'這樣的路徑分隔符,以前覺得既然windows,LINUX 都支持/,那都用成 / 得了,這是沒錯的。可是從這個例子可以看出,當(dāng)要對路徑字符串進(jìn)行處理的時候,就比較危險了,所以最好還是用DIRECTORY_SEPARATOR吧


今天在nginx部署項目,在瀏覽器輸入http://127.0.0.2/index.php/system/category/?action=list

老是提示error

nginx配置沒有問題,下了其他應(yīng)用,可以正常運行

查看了下index.php的代碼

發(fā)現(xiàn)

$uriArr = explode(DIRECTORY_SEPARATOR, $_SERVER['REQUEST_URI']);

var_dump($uriArr);

輸出是string

并沒有分割$_SERVER['REQUEST_URI']

去網(wǎng)上查了下資料,原來

DIRECTORY_SEPARATOR是php的內(nèi)置變量,顯示系統(tǒng)分隔符的,在win下 \  在linux下 /

將語句改為$uriArr = explode('/', $_SERVER['REQUEST_URI']);

OK了


如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答?。?點擊進(jìn)入論壇

發(fā)表評論 (343人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號