歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件路徑中所有目錄名必須都存在,而Windows不需要

Linux文件路徑中所有目錄名必須都存在,而Windows不需要

日期:2017/2/28 14:03:13   编辑:Linux教程

問題由來

昨天部署一個基於ThinkPHP3.1開發的網站,其開發者的開發測試環境為Windows+Apache+PHP。部署到Linux+Apache+PHP下面時不能運行,查看日志提示頁面模板不存在。

模板不存在[./Web/Tpl/Home/Index/../index.html]

事實是./Web/Tpl/Home/index.html這個文件確實存在,而且讀寫權限設置正確。但是,./Web/Tpl/Home/Index 這個目錄是不存在的,雖然最終的路徑結果都是同一個index.html文件,但是使用的中間路徑寫法不同。

原因分析

通過測試發現,在Linux平台,./Web/Tpl/Home/index.html 可以訪問,而./Web/Tpl/Home/Index/../index.html 卻不能訪問,提示不存在文件。這一點可以在命令行下測試:

[root@CentOS192 htdocs]# ll ./Web/Tpl/Home/Index/../index.html
ls: 無法訪問./Web/Tpl/Home/Index/../index.html: 沒有那個文件或目錄

[root@centos192 htdocs]# ll ./Web/Tpl/Home/index.html
-rw-rw-r-- 1 apache apache 11459 3月  23 15:27 ./Web/Tpl/Home/index.html
[root@centos192 htdocs]#

而在Windows平台下,這兩個路徑都可以訪問。

C:\Users\smstong\Desktop\htdocs>attrib ./Web/Tpl/Home/index.html
A            C:\Users\smstong\Desktop\htdocs\Web\Tpl\Home\index.html

C:\Users\smstong\Desktop\htdocs>attrib ./Web/Tpl/Home/Index/../index.html
A            C:\Users\smstong\Desktop\htdocs\Web\Tpl\Home\index.html

可見,Linux和Windows系統對路徑的處理有些不同,相比來說,Linux更加嚴謹一些。

一點思考

如果項目需要跨平台運行,在開發時就應該考慮到不同OS的差異,發布之前,在多種平台都要測試通過。對於這個網站系統來說,除了這個問題,還存在文件路徑大小寫不區分的情況,可見其開發測試人員沒有基本的跨平台考量。

Copyright © Linux教程網 All Rights Reserved