国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP file_exists問題雜談

2024-05-04 23:15:11
字體:
來源:轉載
供稿:網友
問題

  公司有個框架是基于smarty寫的,我負責php的升級,維護人員把新環境布上來之后,測試人員找我提出經常報錯(錯誤:提示找不到文件的)。
  我追蹤了一下代碼,原來是smarty的這個地方報的錯誤。

錯誤:這里報出文件不存在。
  思考過程:
  1、我原以為是程序里沒有這個文件呢,結果發現,文件是有的,那是怎么回事?
  2、后來我再猜是不是php內核有問題,我把php的相關內核文件看了一遍,也沒發現問題。結果我就把整個過程跟項目經理說去了。——事情也沒解決,就這樣先不了了之。升級的事情先耽誤著。
  今天又發現這個問題,我第一反應是php版本是不是升級了,發現沒有。——后來把整個目錄設置成777就沒事了(chmod 777 -R 目錄)。我想是不是file_exists()方法問題。
  所以,我就進行了相關的調試和實驗。

PHP file_exists問題雜談

調試過程

 

調試代碼:

PHP file_exists問題雜談

目錄:

PHP file_exists問題雜談

 

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

PHP file_exists問題雜談

運行結果:

PHP file_exists問題雜談

 

PHP file_exists問題雜談

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

 

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

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問題雜談

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙里县| 印江| 财经| 新平| 石嘴山市| 拜泉县| 新源县| 万州区| 长沙市| 日照市| 台东市| 阳山县| 横山县| 九龙县| 荣昌县| 赣州市| 朝阳市| 布尔津县| 黑龙江省| 哈巴河县| 界首市| 通许县| 嫩江县| 曲松县| 星座| 尖扎县| 乌审旗| 朝阳县| 齐齐哈尔市| 吉首市| 聂拉木县| 苏尼特左旗| 姚安县| 晴隆县| 黄大仙区| 惠水县| 乌什县| 互助| 安泽县| 天台县| 建宁县|