PHP file_exists找不到文件的問題


  file_exists()方法判斷文件是否存在,但是明明文件是存在的,去始終無法找到文件顯示不存在。第一反應是php版本是不是升級了,發現沒有。——后來把整個目錄設置成777就沒事了(chmod 777 -R 目錄)。我想是不是file_exists()方法問題。於是進行了調試和試驗。

                               

調試過程

調試代碼:

                        

目錄:

                        

觀察各個權限:test對www是沒有任何權限的,而執行文件index.php有讀寫執行權限,包含文件test.txt有讀寫權限。

                    

運行結果:

                      

                                

目錄的執行權限影響file_exists()

1、給test一個最大的權限——755

                  

                                  

                      

既然成功了,說明file_exists()函數是受目錄權限的限制的。

那什么樣的目錄權限影響file_exists()呢?

我做了幾個實驗:

1、文件的任何上級目錄,只有寫權限時報文件不存在;

2、文件的任何上級目錄,只有讀權限時也報文件不存在;

3、而當所有上級目錄都有執行權限的時候,報文件是存在的,一切都正常。

結果,說明file_exists()在判斷文件是否存在的時候是遞歸判斷每個目錄是不是有執行權限。

修改文件路徑為相對路徑,得出一樣的結果。

                    

                        

總結

在php手冊上並沒有提到,file_exists會受目錄的執行權限影響。今通過此文告知那些也有這方面問題的開發者。僅以此為戒。

附加信息

如果目錄沒有執行權限,php-fpm應用進程就不能到這個目錄下面去進行文件搜索,當然就認為文件不存在(實際是認為沒有可執行的目錄是不存在的)。

手冊內容,大家可以一起斟酌一下,主要是執行權限。在這里就不詳談讀寫權限了(一般都很好理解)

        

明顯手冊中,對目錄的執行權限有明確的指示。對目錄的執行權限,就是擁有被搜索的權利。

                            

 

原文鏈接:http://www.cnblogs.com/baochuan/archive/2012/05/06/2445822.html

 


免責聲明!

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



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