5

我已经在我的笔记本电脑上用 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 可以在这里找到。我不确定我当前的操作系统附带了哪个版本。

现在我保留这个技巧。

4

3 回答 3

4

我也有这个错误,发现这个:

http://software.techassistbox.com/error-mis-cased-uri-or-unacceptable-unicode-in-uri-in-modhfsapple-after-updating-mac-os-x-from-1083-to-1084_52942。 html

总之,在 httpd.conf 中注释掉这一行:

#LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

这是一个黑客,但它的工作原理。

于 2014-05-09T01:40:17.200 回答
0

当 Apache 配置中命名的目录包含包含 Unicode 或大小写与文件系统中实际名称不同的字符时,通常会出现此问题。目录名称可以出现在很多不同的地方,包括<Directory></Directory>标签,在你的例子中,是 DocumentRoot 指令。

在您的情况下,罪魁祸首似乎是您用来编辑 httpd.conf 的任何应用程序。它正在用智能引号替换您的双引号。然后 Apache 看到的不是带引号的字符串,而是一个不带引号的字符串,它恰好以一些 unicode 开头和结尾。最终,这被传递到 mod_hfs_apple 抱怨,因为它无法将其与文件系统上的实际路径匹配。

解决方法:仅在应用程序中编辑您的 httpd.conf,这在您超出 ASCII 字符集时会很明显。如果您使用的是 BBEdit,请确保未启用首选项“使用印刷者的引号”。其次,确保配置中指定的任何目录的大小写与实际文件系统中的大小写匹配。

于 2013-11-28T23:26:15.860 回答
0

代替

DocumentRoot "/Users/Username/Sites"

利用:

DocumentRoot /Users/Username/Sites

删除引号为我解决了这个问题

于 2019-11-21T17:14:00.803 回答