【发布时间】:2011-12-03 16:56:49
【问题描述】:
我正在 MAMP 上开发一个 PHP 程序,并且刚刚实现了以下奇怪的行为:
echo "<br/>PATH = ".dirname(__FILE__);
include 'include.php';
include.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 上使用绝对路径 include(...),则需要大小写混合版本。
【问题讨论】:
-
唯一想到的想法是在每条路径上运行
realpath()并查看这是否会改变任何东西......否则,我认为这真的是一个错误报告的东西 -
Pekka- 是的,已经尝试了 realpath() 的东西- 不行
-
我无法重现此错误。你用的是什么版本的 PHP 和 Apache?
-
@afuzz- Apache/2.2.17 PHP/5.3.6 (MAMP 2.0)
-
您可以将 HFS+ 文件系统配置为区分大小写,也许这会给您正确的文件名?
标签: php path mamp case-sensitive