Mac上file_exists()的大小写敏感度?

Mac上file_exists()的大小写敏感度?

问题描述:

首先,Mac OS X不是我的本地操作系统,但由于我在Ubuntu中感觉很舒服,所以大部分时间都是轻松过渡。Mac上file_exists()的大小写敏感度?

因为它是基于Unix的,所以我觉得这个操作系统是区分大小写的,但file_exists()函数是这样说的。

在我的htdocs文件,我有这2个文件:

test.php的

MyFiLeWiThMiXeDCaSe.php

在test.php的,我有这样的代码:

if(file_exists('myfilewithmixedcase.php')) { 
    echo 'exists'; 
} else { 
    echo 'doesnt exist'; 
} 

// ouputs: exists 

任何人都知道这是怎么发生的?这是一个问题,因为当我们将这样的代码部署到Linux操作系统时,file_exists()返回false。

顺便说一句:我使用MAMP PRO作为本地Web服务器。

+3

不是您当前问题的答案,但可以轻松创建一个具有区分大小写文件系统和挂载的小型额外分区,因为osx上的默认文件系统允许调整大小。将您的Web项目放在该分区上,以防止自己创建区分大小写相关的错误/问题。如果您决定为您的新分区创建符号链接,请注意您的apache路径。 – 2013-04-05 21:38:43

+0

谢谢你的建议,听起来好像我为我的htdocs文件夹创建了一个分区,它应该大大减少这个问题。 – Mark1inLA 2013-04-05 21:45:34

+0

你可以自己写一个区分大小写的file_exists()。您可以首先获取父目录的文件列表,并检查当前文件是否与区分大小写比较。 – 2015-06-16 05:33:02

OS X上的默认文件系统是不区分大小写的HFS +。

可以将卷格式化为区分大小写的HFS +,并且存在启用区分大小写(现有卷)的(脏)方法。但是,这些将破坏现有的软件,并且您应该避免在根卷上区分大小写。

如果您出于某种原因需要区分大小写的文件系统(例如,构建Android需要),则可以使用“磁盘工具”制作适当格式的磁盘映像。

请注意,OS X的UNIX基础对大小写敏感的文件系统可以很好地工作。

+0

感谢您的详细回复。如果我的磁盘工具显示格式:\t Mac OS Extended(Journaled),这是否意味着它目前不区分大小写? – Mark1inLA 2013-04-05 21:42:09

+0

是的。区分大小写的文件系统在磁盘实用程序中特别指出。 (您可以通过创建一个新的磁盘映像轻松创建一个。) – nneonneo 2013-04-05 21:49:47

默认情况下,Mac OS X不区分大小写,因此“FILE”和“file”是同一文件的两个名称。

尽管是BSD衍生产品OS X不区分大小写。或者HFs和HFS +文件系统不是,除非在格式化磁盘时选择区分大小写的选项。这通常不会完成,因为许多应用程序都有这个问题(Adobe,MS等) - 或者至少他们是在Tiger下最后一次尝试它。