溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在PHP中使用file_exists時會遇到哪些問題

發布時間:2020-12-16 16:31:57 來源:億速云 閱讀:177 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關在PHP中使用file_exists時會遇到哪些問題,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

問題:公司有個框架是基于smarty寫的,我負責php的升級,維護人員把新環境布上來之后,測試人員找我提出經常報錯(錯誤:提示找不到文件的)。

我追蹤了一下代碼,原來是smarty的這個地方報的錯誤?! ?/p>

在PHP中使用file_exists時會遇到哪些問題

  錯誤:這里報出文件不存在。

  思考過程:

  1、我原以為是程序里沒有這個文件呢,結果發現,文件是有的,那是怎么回事?

  2、后來我再猜是不是php內核有問題,我把php的相關內核文件看了一遍,也沒發現問題。結果我就把整個過程跟項目經理說去了?!虑橐矝]解決,就這樣先不了了之。升級的事情先耽誤著。

  今天又發現這個問題,我第一反應是php版本是不是升級了,發現沒有?!髞戆颜麄€目錄設置成777就沒事了(chmod 777 -R 目錄)。我想是不是file_exists()方法問題。

調試過程調試代碼:

在PHP中使用file_exists時會遇到哪些問題

目錄:

在PHP中使用file_exists時會遇到哪些問題

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

在PHP中使用file_exists時會遇到哪些問題

在PHP中使用file_exists時會遇到哪些問題

運行結果:

在PHP中使用file_exists時會遇到哪些問題

在PHP中使用file_exists時會遇到哪些問題

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

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

在PHP中使用file_exists時會遇到哪些問題

在PHP中使用file_exists時會遇到哪些問題

在PHP中使用file_exists時會遇到哪些問題

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

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

我做了幾個實驗:

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

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

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

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

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

在PHP中使用file_exists時會遇到哪些問題

在PHP中使用file_exists時會遇到哪些問題

總結

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

附加信息

感謝大家留的言,非常有用。經過大家的意見我再查了下手冊,確實,如果目錄沒有執行權限,php-fpm應用進程就不能到這個目錄下面去進行文件搜索,當然就認為文件不存在(實際是認為沒有可執行的目錄是不存在的)。手冊內容,大家可以一起斟酌一下,主要是執行權限。在這里就不詳談讀寫權限了(一般都很好理解)。

在PHP中使用file_exists時會遇到哪些問題

上述就是小編為大家分享的在PHP中使用file_exists時會遇到哪些問題了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女