Apache не работает с пользовательской папкой Sites на macOS 10.13 High Sierra


8

Я следовал этому руководству по настройке Apache на High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Я использовал это, чтобы установить это на Сьерре.

Но когда я захожу, http://localhost/~scott/я получаю «Запрещено. У вас нет разрешения на доступ к / ~ scott / на этом сервере».

Предложение по этому похожему вопросу: localhost / userdir на macOS High Sierra предназначен для загрузки vhosts. Что я пробовал, но все равно получаю «Запрещено».

Что-нибудь изменилось между Sierra и High Sierra, что мешало бы Apache работать с папками пользовательских сайтов?


Попробуй apachectl configtestи
Ракеш Кумар

ВозвращаетSyntax OK
sfyfedotcom

Хорошо, пожалуйста, посетите URL localhost / ~ yourusername
Ракеш Кумар

"Запрещено. У вас нет прав доступа к / ~ scott / на этом сервере."
sfyfedotcom

Ответы:


8

Это сработало для меня, когда я столкнулся с той же проблемой.

Пожалуйста, проверьте файл "/private/etc/apache2/extra/httpd-userdir.conf".

изменение

#Include /private/etc/apache2/users/*.conf

в

Include /private/etc/apache2/users/*.conf

и перезапустите Apache.

От: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


Эта строка /private/etc/apache2/extra/httpd-userdir.confуже не прокомментирована из ссылки, по которой я следовал.
sfyfedotcom

ты перезапустил apache "sudo apachectl restart"
Роберт,

Да. Я сделал все изменения в конфигурационных файлах Apache
sfyfedotcom

4

Чтобы разрешить доступ к каталогу сайтов, необходимо добавить следующее /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

Конфигурация Apache по умолчанию установлена ​​как запрещенная на /, поэтому вы должны явно разрешить доступ ко всему.


Добавил и перезапустил apache. Не имело никакого значения
sfyfedotcom

У меня такая же проблема. Получал "Это работает!" на locahost, но не может заставить работать пользовательские каталоги. Исправление правила DirectoryMatch как это решило это. Спасибо!
Карра

4

Просто чтобы расширить на ответ Диого Лимы.

После обновления до High Sierra Apple сделала копии ваших предыдущих настроек apache и добавила ~ ~ к файлам * .conf в папках / etc / apache2 и / etc / apache2 / extra. Если вы используете виртуальные хосты или ssl-virtual hosts, вам также необходимо перенести предыдущие версии для этих файлов .conf.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Это была чистая установка High Sierra, поэтому у меня не было никаких предыдущих файлов конфигурации
sfyfedotcom

Итак, просто чтобы уточнить, у вас это работало на Sierra, но вы не обновлялись, а выполняли полную чистую установку? Я вспоминаю, что когда я настроил его на работу в Sierra, я создал символическую ссылку из папки Sites в папку / Library / WebServer / Documents и убедился, что я предоставил себе разрешение (чтение и запись). Поскольку на данном этапе это просто проблема с разрешениями, сделали ли вы символическую ссылку и изменили разрешения?
Джеймс Мартин

Да, это правильно. Я всегда делаю чистую установку новых версий MacOS. Я знаю, что могу это сделать, но я хочу сохранить и то /Library/WebServer/Documentsи другое Users/username/Sitesкак отдельные места для веб-проектов, поскольку это то, что я смог сделать на macOS за последние 10 с лишним лет.
sfyfedotcom

Похоже, вам нужно будет запустить два отдельных экземпляра Apache на одной машине, но разве это не противоречит цели балансировки нагрузки на сайты, которые теперь предлагает Apache при запуске из одного экземпляра? Рекомендуемая рекомендация Apple - больше не использовать Пользователи / имя пользователя / Сайты и придерживаться Библиотеки /
Джеймс Мартин

Единственный экземпляр Apache - это кабель для чтения веб-проектов из нескольких каталогов. Вот так я его настраивал годами.
sfyfedotcom

3

После попытки всех вышеперечисленных методов, если вы все еще получаете «запрет» при доступе к localhost, попробуйте добавить virtualhost в ваш /etc/apache2/extra/httpd-vhosts.conf

Добавить:

<VirtualHost *:80>
ServerName localhost
DocumentRoot /Library/WebServer/Documents/
</VirtualHost>

затем перезапустите Apache.

https://coolestguidesontheplanet.com/set-up-virtual-hosts-in-apache-on-macos-high-sierra-10-13/

у меня отлично работает



1

Только что обновил сегодня утром. Использование папки Sites в / Users / username.

Создайте резервную копию и замените httpd.conf, httpd-userdir.conf и https-vhosts.conf с предыдущими вариантами.

Запустил sudo apachectl configtestи получил ошибку PHP (PHP обновлен до 7 в High Sierra). Отредактировал http.conf для запуска PHP7 и теперь все снова работает.


+1 для включения примечанияsudo apachectl configtest
Дэвид C

1

Возможное решение (после сбоя всех вышеперечисленных предложений). Вопрос с разрешения домашнего каталога. Он должен быть исполняемым для группы / других:

sudo chmod go + x / Users / имя пользователя

где «имя пользователя» должно быть заменено фактическим именем пользователя. После этого все работает!


0

Уф !! Я понял это сам.

Сделать эти шаги

Шаг 1: Откройте свой терминал и выполните эту команду ниже

sudo atom /etc/apache2/httpd.conf

А затем раскомментируйте строку, удалив "#"перед ней знак

LoadModule php7_module libexec/apache2/libphp7.so

Шаг 2: Запустите следующую команду, указанную ниже

cd /private/etc

sudo cp php.ini.default php.ini

Шаг 3: Затем перейдите в /Library/WebServer/Documentsкаталог и выполните

sudo chown -R  root yourprojectname

Вернитесь в браузер Safari и введите "http://localhost/yourprojectname"

Вы все готовы идти.

Я использую MacOS High Sierra 10.13, он был обновлен вчера утром.


localhostработает от /Library/WebServer/Documentsработает нормально. Проблема бежит localhost/~scottот /Users/Scott/Sites.
sfyfedotcom

0

Потратил все утро, чтобы понять это, но в конце концов это сработало. Надеюсь, что это может быть полезно для кого-то.

Я последовал за гидом, но с небольшим изменением.

Теперь я могу получить доступ к локальным папкам, но ...

До хай-сьерра это было похоже на: http://localhost/~username/smomesite.local

Теперь это как: http://localhost/smomesite.local

Больше не ~usernameтребуется.


Я не хочу менять заданный по умолчанию веб-путь apache для своей пользовательской папки. В предыдущей версии macOS я мог запускать файлы / сайты как из Users/myname/Sitesкаталога, так и/Library/WebServer/Documents
sfyfedotcom

0

У меня просто была такая же проблема, и я хотел сделать именно то, что вы хотели (сохраните корень в / Library / WebServer / Documents, но также разрешите папки пользовательских сайтов). Я не уверен, будет ли это полезно, но, потратив на это несколько часов сегодня вечером, просматривая построчно все файлы .conf и задаваясь вопросом, что же не так, я понял, что процесс httpd не может прочитать мои собственный каталог пользователя. По какой-то причине он был установлен как 750, и пользователь _www не может его прочитать. Однажды я исправил это, запустив «chmod 755». в моем пользовательском каталоге папка Sites показалась прямо.

Я не уверен, как мой собственный пользовательский каталог стал таким, так как кажется, что по умолчанию он равен 755, когда я создаю нового пользователя. И я уже дважды проверял, что моя папка Sites установлена ​​на 755.


Просто попробовал это и перезапустил Apache. Тем не менее «Запрещено: у вас нет прав доступа к / ~ имени пользователя / на этом сервере»
sfyfedotcom

0

У меня такая же проблема. Я раскомментировал две строки ниже (как уже предлагалось в другом ответе)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Но все равно получил ту же ошибку. Уловка для меня состояла в том, чтобы раскомментировать эти дополнительные строки в файле httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Надеюсь, это поможет.


Я уже раскомментировал эти строки
sfyfedotcom

0

Бывает, что обновление перенесло все ваши предыдущие настройки в файлы .conf ~ previous. Если вы переместите /etc/apache2/extra/httpd-userdir.conf~previous в /etc/apache2/extra/httpd-userdir.conf и /etc/apache2/extra/httpd.conf~previous в / etc / apache2 / extra / httpd.conf, он должен работать как раньше.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Это была чистая установка High Sierra, поэтому у меня не было никаких предыдущих файлов конфигурации
sfyfedotcom

0

У меня была такая же проблема. Разрешение было легким. См ответ размещен здесь: https://apple.stackexchange.com/a/306390/129503

Я столкнулся с тем же после того, как я повысил до Высокой Сьерры ранее сегодня. Я обнаружил, что следующие файлы apache были заменены новыми версиями. К счастью, для всех этих файлов в той же папке существовал предыдущий файл FILE ~. Я просто скопировал предыдущую версию обратно в исходную, перезапустил apache и все было хорошо.

В папке /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Пример:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

замещать

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

из более старых ~ предыдущих файлов.

Вы можете получить ошибку модуля php5 в httpd.conf, заменить php5 на php7, и ваши сайты должны начать работать.

замещать

LoadModule php5_module libexec/apache2/libphp5.so

С

LoadModule php7_module libexec/apache2/libphp7.so

0

Я только что обновился и у меня были точно такие же проблемы. Я не использую Vhosts. Решением для меня было обеспечение:

В https.confкомментариях

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

и убедитесь, что extra/httpd-user.confесть строка:

UserDir Sites
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.