is_file和file_exists在已装载的卷上不区分大小写

时间:2019-01-24 12:06:49

标签: php docker filesystems

我有一个运行debian的docker容器,并使用PHP 5.6作为开发环境。该代码是从我的Win10主机装载的。我今天注意到,在已挂载的目录中,file_exists和is_file都不区分大小写。 is_file("/some/path/test.php")is_file("/some/path/Test.php")均返回true。在Windows计算机上,这是预期的行为,但在Linux上则不是。我想避免仅仅为了适应特定的开发环境而更改代码。

有没有一种方法可以设置docker或PHP以模拟没有安装卷的真实Linux机器的行为?

1 个答案:

答案 0 :(得分:0)

realpath($filePath)可能会有所帮助:

http://php.net/manual/en/function.realpath.php

因此本质上您可以使用

$resolvedPath = realpath($myPath);
if (is_file($resolvedPath)) {...}

尽管我现在不确定这实际上已经回答了您的问题。如果您的文件在Linux上格式总是正确的,那么它们也将在Windows上运行吗?还是您打算在同一个文件夹/目录中有两个分别称为Test.phptest.php的文件,并且需要识别出这种差异?