403禁止访问:Apache在将文档根文件夹移动到iCloud驱动器后不工作

dzhpxtsq  于 2023-04-21  发布在  Apache
关注(0)|答案(1)|浏览(149)

所以我使用的是MacOS Catalina ,我的Apache环境运行得很好,直到我决定将我的文档根目录移动到iCloud驱动器,以保持备份。
之前我的文档根是:

/users/admin/www

现在是了

/users/admin/Library/Mobile Documents/com~apple~CloudDocs/www

我相应地编辑了httpd.conf:

DocumentRoot "/users/admin/Library/Mobile Documents/com~apple~CloudDocs/www"
<Directory "/users/admin/Library/Mobile Documents/com~apple~CloudDocs/www">
    Options FollowSymLinks Multiviews SymLinksIfOwnerMatch
    MultiviewsMatch Any
    AllowOverride All
    Require all granted
</Directory>

<Directory "/users/admin/Library/Mobile Documents/com~apple~CloudDocs/www/myfolder">
    Options +FollowSymLinks +Multiviews +SymLinksIfOwnerMatch
    MultiviewsMatch Any
    AllowOverride All
    Allow from All
    Require all granted
</Directory>

重新启动Apache,重新启动机器,但现在我可以访问127.0.0.1,除了一个特定的文件夹(让我们称之为www/myfolder)。当我尝试访问127.0.0.1/myfolder时,我得到以下错误:

Forbidden
You don't have permission to access / on this server.

检查Apache日志文件,这是我得到的错误:

[Thu Oct 24 14:00:24.830700 2019] [access_compat:error] [pid 61703] [client 127.0.0.1:57804] AH01797: client denied by server configuration: /users/admin/Library/Mobile Documents/com~apple~CloudDocs/www/myfolder/public_html/

我在这里错过了什么?请帮助,我需要工作:D

gajydyqb

gajydyqb1#

我看到的第一件事是你在目录块中使用了Apache 2.4风格的语法,但是在你的错误日志中,抛出错误的模块是access_compat。根据Apache文档:
The directives provided by mod_access_compat have been deprecated by mod_authz_host。将Order、Allow或Deny等旧指令与Require等新指令混合在一起在技术上是可行的,但不建议使用。创建此模块是为了支持仅包含旧指令的配置,以促进2.4升级
下一条线索是错误代码:AH01797。这是由server configuration issue引起的:

客户端被服务器配置拒绝

此错误意味着Apache配置拒绝访问文件系统上的目录。
我在这里假设您实际上使用的是2.4,并且错误地启用了access_compat
再次查看配置文件,找到加载mod_access_compatLoadModule指令,并将其注解掉。它可能在httpd.conf文件中,但有许多不同的组织和配置Apache安装的风格,因此它可能在其他地方。如果您有Debian风格的安装,你需要删除符号链接/etc/apache2/mods_enabled/mod_access_compatGrep -R access_compat *可能会有帮助。

编辑2更多观察结果:

1.在第二个directory节中,有

Allow from all
Require all granted

再次禁用access_compat,并在重新启动Apache之前删除Allow from all行。
1.我不认为第二个directory节是必要的,你可以删除整个块,然后重启服务器,这样就可以了。
首先尝试(1)禁用access_compat并从httpd.conf文件中删除Allow指令,然后使用apache2ctl -k graceful重新启动Apache。如果不起作用,请注解掉整个第二节directory并重新启动。
我有50%的把握可以解决这个问题,如果不能,我需要看一下你的整个httpd.conf文件,然后才能进一步解决问题。

相关问题