解析php file_exists無效的解決辦法
更新時間:2013年06月26日 09:06:12 作者:
本篇文章是對php中file_exists無效的解決辦法進行了詳細的分析介紹,需要的朋友參考下
方法1 :據官方手冊上描述若php教程的safe mode相關的設置過于苛刻,就會出現這樣的情形:盡管文件真實存在也被誤報,認為文件不存在。
由于服務器端的php.ini我們無法操縱,當用ini_set()也關閉不了safe mode模式,我們只有退而求其次,找一個更可靠、安全的檢測方法來檢測文件是否存在。我們可以借助 $_server['document_root'] 來加以實現。$_server['document_root'] 返回的是網站的根目錄,該目錄的最后一個子目錄不包含目錄標志符號“/”,如:
d:/www/htdocs
有了根目錄,再加上需要檢測的文件的路徑,我們將得到一個絕對的路徑,php就可以順利使用file_exists()函數對之進行檢測。上述代碼我們只需要更改第一行為(注意,我們在config.php之前加上了符號“/”):
$file=$_server['document_root']."/config.php";
如此,代碼的執(zhí)行就很可信,不會出現預期以外的結果。
以上方法同樣適用于目錄(is_dir())或文件(is_file())的相關檢測函數,能夠檢測出被安全保護的目錄或文件是否存在。
最后順便提一下:這類被php特殊設置所保護的文件在引用(include和require)時不必加上$_server['document_root']路徑,因為,根據php說明文檔,它們是允許引用的。
方法2:本人的情況是因為文件在windows和linux之間來回的移動。造成linux下文件和目錄的訪問權限被改變,導致出文件除擁有者外其他均無訪問權限。使用chmod -r 755 xxx/* 解決了問題。
由于服務器端的php.ini我們無法操縱,當用ini_set()也關閉不了safe mode模式,我們只有退而求其次,找一個更可靠、安全的檢測方法來檢測文件是否存在。我們可以借助 $_server['document_root'] 來加以實現。$_server['document_root'] 返回的是網站的根目錄,該目錄的最后一個子目錄不包含目錄標志符號“/”,如:
d:/www/htdocs
有了根目錄,再加上需要檢測的文件的路徑,我們將得到一個絕對的路徑,php就可以順利使用file_exists()函數對之進行檢測。上述代碼我們只需要更改第一行為(注意,我們在config.php之前加上了符號“/”):
$file=$_server['document_root']."/config.php";
如此,代碼的執(zhí)行就很可信,不會出現預期以外的結果。
以上方法同樣適用于目錄(is_dir())或文件(is_file())的相關檢測函數,能夠檢測出被安全保護的目錄或文件是否存在。
最后順便提一下:這類被php特殊設置所保護的文件在引用(include和require)時不必加上$_server['document_root']路徑,因為,根據php說明文檔,它們是允許引用的。
方法2:本人的情況是因為文件在windows和linux之間來回的移動。造成linux下文件和目錄的訪問權限被改變,導致出文件除擁有者外其他均無訪問權限。使用chmod -r 755 xxx/* 解決了問題。
相關文章
PHP MYSQL亂碼問題,使用SET NAMES utf8校正
PHP操作數據庫的時候,數據庫中數據使用UTF8編碼,在讀出來的時候,顯示的全是???????問號亂碼,找了一些資料原來是在讀取之前進行一次編碼設置2009-11-11

