403 Запрещено: Apache не работает после перемещения корневой папки документа на диск iCloud - PullRequest
2 голосов
/ 10 октября 2019

Так что я использую 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

1 Ответ

1 голос
/ 21 октября 2019

Первое, что я вижу, это то, что вы используете синтаксис стиля Apache 2.4 в своем блоке каталогов, но затем в журнале ошибок модуль, выдающий ошибку, равен access_compat. Согласно документации Apache:

Директивы, предоставленные mod_access_compat, устарели mod_authz_host. Смешение старых директив, таких как Order, Allow или Deny, с новыми директивами, такими как Require, технически возможно, но не рекомендуется. Этот модуль был создан для поддержки конфигураций, содержащих только старые директивы для облегчения обновления 2.4

Следующим подсказкой является код ошибки: AH01797. Это вызвано проблемой конфигурации сервера :

Клиенту отказано в конфигурации сервера

Эта ошибка означает, что доступ к каталогув файловой системе было отказано в конфигурации Apache.

Я предполагаю, что вы на самом деле используете 2.4, и что access_compat включен по ошибке.

Посмотритеснова просмотрите ваши файлы конфигурации, найдите директиву LoadModule, которая загружает mod_access_compat, и закомментируйте ее. Он может находиться в вашем файле httpd.conf, но существует множество различных стилей организации и настройки установки Apache, поэтому он может быть в другом месте. Если у вас установлена ​​установка в стиле Debian, вам нужно удалить символическую ссылку /etc/apache2/mods_enabled/mod_access_compat. Grep -R access_compat * может помочь.

РЕДАКТИРОВАТЬ Еще 2 наблюдения:

  1. Во втором directory строфе у вас есть
Allow from all
Require all granted

Который смешивает старый синтаксис директивы с новым, а также является избыточным. Снова отключите access_compat, а также удалите эту строку Allow from all перед перезапуском Apache.

Я не думаю, что вторая directory строфа даже необходима. Вероятно, вы можете удалить весь блок и перезапустить сервер, и он будет работать.

Сначала попробуйте (1), отключив access_compat и удалив директиву Allow из вашего файла httpd.conf,и перезапустите apache, используя apache2ctl -k graceful. Если это не сработает, закомментируйте весь второй directory раздел и перезапустите снова.

Я примерно на 50% уверен, что это исправит это. Если этого не произойдет, мне действительно нужно будет просмотреть весь файл httpd.conf, прежде чем я смогу продолжить поиск неисправностей.

...