解析php file_exists無(wú)效的解決辦法
更新時(shí)間:2013年06月26日 09:06:12 作者:
本篇文章是對(duì)php中file_exists無(wú)效的解決辦法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
方法1 :據(jù)官方手冊(cè)上描述若php教程的safe mode相關(guān)的設(shè)置過(guò)于苛刻,就會(huì)出現(xiàn)這樣的情形:盡管文件真實(shí)存在也被誤報(bào),認(rèn)為文件不存在。
由于服務(wù)器端的php.ini我們無(wú)法操縱,當(dāng)用ini_set()也關(guān)閉不了safe mode模式,我們只有退而求其次,找一個(gè)更可靠、安全的檢測(cè)方法來(lái)檢測(cè)文件是否存在。我們可以借助 $_server['document_root'] 來(lái)加以實(shí)現(xiàn)。$_server['document_root'] 返回的是網(wǎng)站的根目錄,該目錄的最后一個(gè)子目錄不包含目錄標(biāo)志符號(hào)“/”,如:
d:/www/htdocs
有了根目錄,再加上需要檢測(cè)的文件的路徑,我們將得到一個(gè)絕對(duì)的路徑,php就可以順利使用file_exists()函數(shù)對(duì)之進(jìn)行檢測(cè)。上述代碼我們只需要更改第一行為(注意,我們?cè)赾onfig.php之前加上了符號(hào)“/”):
$file=$_server['document_root']."/config.php";
如此,代碼的執(zhí)行就很可信,不會(huì)出現(xiàn)預(yù)期以外的結(jié)果。
以上方法同樣適用于目錄(is_dir())或文件(is_file())的相關(guān)檢測(cè)函數(shù),能夠檢測(cè)出被安全保護(hù)的目錄或文件是否存在。
最后順便提一下:這類被php特殊設(shè)置所保護(hù)的文件在引用(include和require)時(shí)不必加上$_server['document_root']路徑,因?yàn)?,根?jù)php說(shuō)明文檔,它們是允許引用的。
方法2:本人的情況是因?yàn)槲募趙indows和linux之間來(lái)回的移動(dòng)。造成linux下文件和目錄的訪問(wèn)權(quán)限被改變,導(dǎo)致出文件除擁有者外其他均無(wú)訪問(wèn)權(quán)限。使用chmod -r 755 xxx/* 解決了問(wèn)題。
由于服務(wù)器端的php.ini我們無(wú)法操縱,當(dāng)用ini_set()也關(guān)閉不了safe mode模式,我們只有退而求其次,找一個(gè)更可靠、安全的檢測(cè)方法來(lái)檢測(cè)文件是否存在。我們可以借助 $_server['document_root'] 來(lái)加以實(shí)現(xiàn)。$_server['document_root'] 返回的是網(wǎng)站的根目錄,該目錄的最后一個(gè)子目錄不包含目錄標(biāo)志符號(hào)“/”,如:
d:/www/htdocs
有了根目錄,再加上需要檢測(cè)的文件的路徑,我們將得到一個(gè)絕對(duì)的路徑,php就可以順利使用file_exists()函數(shù)對(duì)之進(jìn)行檢測(cè)。上述代碼我們只需要更改第一行為(注意,我們?cè)赾onfig.php之前加上了符號(hào)“/”):
$file=$_server['document_root']."/config.php";
如此,代碼的執(zhí)行就很可信,不會(huì)出現(xiàn)預(yù)期以外的結(jié)果。
以上方法同樣適用于目錄(is_dir())或文件(is_file())的相關(guān)檢測(cè)函數(shù),能夠檢測(cè)出被安全保護(hù)的目錄或文件是否存在。
最后順便提一下:這類被php特殊設(shè)置所保護(hù)的文件在引用(include和require)時(shí)不必加上$_server['document_root']路徑,因?yàn)?,根?jù)php說(shuō)明文檔,它們是允許引用的。
方法2:本人的情況是因?yàn)槲募趙indows和linux之間來(lái)回的移動(dòng)。造成linux下文件和目錄的訪問(wèn)權(quán)限被改變,導(dǎo)致出文件除擁有者外其他均無(wú)訪問(wèn)權(quán)限。使用chmod -r 755 xxx/* 解決了問(wèn)題。
相關(guān)文章
php設(shè)計(jì)模式 Bridge (橋接模式)
將抽象部份與它實(shí)現(xiàn)部分分離,使用它們都可以有獨(dú)立的變化2011-06-06
PHP實(shí)現(xiàn)簡(jiǎn)單鑒權(quán)的示例代碼
這篇文章主要為大家詳細(xì)介紹了php如何通過(guò)在header增加key,sign,timestamp來(lái)實(shí)現(xiàn)鑒權(quán),文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2023-12-12
PHP MYSQL亂碼問(wèn)題,使用SET NAMES utf8校正
PHP操作數(shù)據(jù)庫(kù)的時(shí)候,數(shù)據(jù)庫(kù)中數(shù)據(jù)使用UTF8編碼,在讀出來(lái)的時(shí)候,顯示的全是???????問(wèn)號(hào)亂碼,找了一些資料原來(lái)是在讀取之前進(jìn)行一次編碼設(shè)置2009-11-11
PHP依賴注入(DI)和控制反轉(zhuǎn)(IoC)詳解
這篇文章主要介紹了PHP依賴注入(DI)和控制反轉(zhuǎn)(IoC)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

