首页 > Windows开发 > 详细

Linux文件路径中所有目录名必须都存在,而Windows不需要

时间:2015-03-24 11:06:37      阅读:286      评论:0      收藏:0      [点我收藏+]

Linux文件路径中所有目录名必须都存在,而Windows不需要

问题由来

昨天部署一个基于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的差异,发布之前,在多种平台都要测试通过。对于这个网站系统来说,除了这个问题,还存在文件路径大小写不区分的情况,可见其开发测试人员没有基本的跨平台考量。

Linux文件路径中所有目录名必须都存在,而Windows不需要

原文:http://blog.csdn.net/smstong/article/details/44462967

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!