我已经在我的笔记本电脑上用 Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 设置了一个本地开发机器。在我升级 OS X 之前一切正常。每当我尝试访问我的本地主机服务器时,我都会收到 403 错误。我检查了我的 apache error_log 并找到了这些条目。
[Mon Jun 24 14:48:30 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/index.html, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
[Mon Jun 24 14:48:30 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/index.php, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
[Mon Jun 24 14:48:31 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/index.html, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
[Mon Jun 24 14:48:31 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/index.html, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
[Mon Jun 24 14:48:31 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/index.php, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
[Mon Jun 24 14:48:31 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Eugene/Sites/favicon.ico, wants: /\xe2\x80\x9c/Users/Eugene/Sites/\xe2\x80\x9d/
我设法通过在 httpd.conf 中注释掉这一行来解决这个问题
#LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so
但是,我意识到这只是一个临时的 hack,需要找到解决此问题的方法。有人可以帮我吗?
似乎 mod_hfs_apple2.c 文件在文件名周围添加了 \xe2\x80\x9c (“) 和 \xe2\x80\x9d (”)。Unicode 字符从这里得到。这使得请求不同于 DocumentRoot 目录。
例如在我的 httpd.conf 我有这个
DocumentRoot "/Users/Username/Sites"
这是我运行后发现的错误tail error_log
[Mon Nov 18 19:51:35 2013] [error] [client ::1] mod_hfs_apple: Mis-cased URI or unacceptable Unicode in URI: /Users/Username/Sites/index.php, wants: /\xe2\x80\x9c/Users/Username/Sites/\xe2\x80\x9d/
mod_hfs_apple2.c 可以在这里找到。我不确定我当前的操作系统附带了哪个版本。
现在我保留这个技巧。