Apache не працює з папкою Сайти користувачів на macOS 10.13 High Sierra


8

Я дотримувався цього керівництва по налаштуванню Apache на Високій Сьєррі: 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 працювати з папками Sites користувачів?


Спробуйте apachectl configtestі оновіть вихід
Rakesh kumar

Повертається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

і перезапустити апаш.

Від: /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 за замовчуванням встановлена ​​на заборону увімкнено /, тому вам потрібно чітко дозволити доступ до всього.


Доданий і перезапущений апаш. Не
змінило

У мене була така ж проблема. Отримував "Це працює!" в locahost, але не вдалося змусити працювати з каталогами користувачів. Виправлення подібного правила DirectoryMatch вирішило його. Дякую!
Карра

4

Просто для розширення відповіді Діого Ліми.

Під час оновлення до High Sierra Apple зробила копії попередніх налаштувань apache та додала ~ попередні файли * .conf у / etc / apache2 та / etc / apache2 / додаткові папки. Якщо ви використовуєте віртуальні хости або ssl-віртуальні хости, вам також потрібно буде перемістити попередні версії для цих файлів .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, що я створив символічне посилання зі своєї папки Sites на папку / Library / WebServer / Documents і переконався, що я дав собі дозвіл (читати та писати). Оскільки на цьому етапі це здається лише проблемою дозволів, ви зробили символічне посилання та змінили дозволи?
Джеймс Мартін

Так, це правильно. Я завжди встановлюю нові версії macOS. Я усвідомлюю, що можу це зробити, але хочу підтримувати як /Library/WebServer/Documentsі Users/username/Sitesокремі місця для веб-проектів, тому що це я мав змогу робити на macOS за останні 10+ років.
sfyfedotcom

Так виглядає, що вам потрібно запустити два окремі екземпляри Apache на одній машині, але хіба це не переможе ціль збалансування завантаження веб-сайтів, які Apache пропонує зараз при запуску з одного примірника? Рекомендація Apple щодо найкращих практик - більше не використовувати користувачів / ім’я користувача / сайти та дотримуватися бібліотеки / веб-сервера / документів
James Martin

Єдиний екземпляр 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

Щойно оновлено сьогодні вранці. Використання папки Сайти в / Користувачі / Ім'я користувача.

Створено резервні копії та замінено httpd.conf, httpd-userdir.conf та https-vhosts.conf w / the попередні варіанти.

Побіг sudo apachectl configtestі отримав помилку PHP (PHP оновлено до 7 у Високій Сьєррі). Відредагував http.conf, щоб запустити PHP7, і тепер все працює знову.


+1 за включення приміткиsudo apachectl configtest
David C

1

Можливе рішення (після відмови від усіх вищезазначених пропозицій). Проблема - з дозволу домашнього каталогу. Він повинен бути виконаним для групи / інших:

sudo chmod go + x / Користувачі / ім'я користувача

де "ім'я користувача" слід замінити фактичним ім'ям користувача. Після цього воно працює!


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

Провели цілий ранок, щоб розібратися, але нарешті спрацювало. Сподіваюся, це може бути корисним для когось.

Я дотримувався довідника, але з невеликою зміною.

Тепер я можу отримати доступ до папок localhost, але ...

До хай-сиєрра це було так: http://localhost/~username/smomesite.local

Зараз так: http://localhost/smomesite.local

Більше не ~usernameпотрібно.


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

0

У мене саме ця проблема була, і я хотів зробити саме те, що ви хотіли (зберігайте корінь у / Library / WebServer / Documents, але також дозволяйте папкам Sites користувачів). Я не впевнений, чи це стане в нагоді, але потріскавшись у цьому годинами сьогодні, переглядаючи по черзі всі файли .conf і цікавившись, що не так, я зрозумів, що процес httpd не зміг прочитати мій власний каталог користувачів. Чомусь його було встановлено як 750, і користувач _www не може його прочитати. Одного разу я це виправив, запустивши "chmod 755". у моєму каталозі користувачів папка Сайти відображалася праворуч.

Я не впевнений, як мій власний каталог користувачів став таким, оскільки, здається, вони за замовчуванням становлять 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

Сподіваюся, що це допомагає.



0

Буває, що оновлення перемістило всю попередню конфігурацію до файлів .conf ~ previous. Якщо ви перемістите /etc/apache2/extra/httpd-userdir.conf~previous до /etc/apache2/extra/httpd-userdir.conf та /etc/apache2/extra/httpd.conf~previous to / 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 ~ попередній файл. Я просто скопіював попередню версію до початкової, перезапустив апаш і все було добре.

У папці /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

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

У 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.