Linux文件路径中所有目录名必须都存在,而Windo

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文件,但是使用的中间路径写法不同。

js9905com金沙网站 ,原因分析

通过测试发现,在Linux平台,./Web/Tpl/Home/index.html 可以访问,而./Web/Tpl/Home/Index/../index.html 却不能访问,提示不存在文件。这一点可以在命令行下测试:

[[email protected] htdocs]# ll ./Web/Tpl/Home/Index/../index.html
ls: 无法访问./Web/Tpl/Home/Index/../index.html: 没有那个文件或目录

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

而在Windows平台下,这两个路径都可以访问。

C:UserssmstongDesktophtdocs>attrib ./Web/Tpl/Home/index.html
A            C:UserssmstongDesktophtdocsWebTplHomeindex.html

C:UserssmstongDesktophtdocs>attrib ./Web/Tpl/Home/Index/../index.html
A            C:UserssmstongDesktophtdocsWebTplHomeindex.html

可见,Linux和Windows系统对路径的处理有些不同,相比来说,Linux更加严谨一些。

一点思考

如果项目需要跨平台运行,在开发时就应该考虑到不同OS的差异,发布之前,在多种平台都要测试通过。对于这个网站系统来说,除了这个问题,还存在文件路径大小写不区分的情况,可见其开发测试人员没有基本的跨平台考量。

本文永久更新链接地址:

问题由来 昨天部署一个基于ThinkPHP3.1开发的网站,其开发者的开发测试环境为Windo...

本文由js9905com金沙网站-金沙澳门手机版网址发布于计算机,转载请注明出处:Linux文件路径中所有目录名必须都存在,而Windo

您可能还会对下面的文章感兴趣: