Mac / MAMP上的PHP文件路径的大小写不一致?

2022-08-30 18:37:51

我正在MAMP上开发一个PHP程序,并且刚刚意识到以下错误的行为:

echo "<br/>PATH = ".dirname(__FILE__);
include 'include.php';

包括.php:

<?php
echo "<br/>PATH = ".dirname(__FILE__);
?>

结果:

PATH = /users/me/stuff/mamp_server/my_site(全部小写)

PATH = /Users/me/Stuff/mamp_server/my_site (混合大小写)

是什么导致了这种不一致的行为,我该如何防范?(请注意,我不能只是将所有内容都转换为小写,因为该应用程序注定要用于Linux服务器,其中文件路径区分大小写。

更新:

和 存在此问题。__FILE____DIR__

看起来这可能是一个真正的问题,没有解决方法...去提交错误报告,除非我听到其他消息。

错误报告:

https://bugs.php.net/bug.php?id=60017

更新:

另一个注意事项:如果您在Mac上执行绝对路径包含(...),则需要混合大小写版本。


答案 1

我在MAC OS X上开发PHP时遇到了类似的问题。您可以使用区分大小写的文件系统进行格式化,但如果您使用的是Adobe的设计软件,则可能会遇到麻烦:http://forums.adobe.com/thread/392791

真正的问题是,据说不区分大小写的文件系统实际上部分不区分大小写。您可以在同一目录中创建两个名为“文件名”和“文件名”的文件,但“文件名”和“文件名”可能指向这两个文件:http://systemsboy.com/2005/12/mac-osx-command-line-is-partially-case-insensitive.html


答案 2

在与应用相同的目录中创建包含文件怎么样?

<?php return __DIR__; ?>

像这样使用它:

$trueDIR = include('get_true_dir.php');

从您上面发布的内容来看,这应该有效。是的,这是一个有点黑客的解决方法,但它是一个解决方法,即使在没有遇到此问题的系统上也应该工作。


推荐