клієнтом apache відмовлено в налаштуваннях сервера після оновлення Mac OS X до Yosemite


12

Я знаю, це схоже на інші питання, але, здається, Yosemite щось змінив у конфігурації apache з оновленням. мій журнал помилок говорить "клієнту відмовлено в налаштуваннях сервера: /Users/douglas/Sites/testpatient.php"

Версія Apache: MacBook-Pro: apache2 douglas $ apachectl -v Версія сервера: Apache / 2.4.9 (Unix) Сервер побудований: 9 вересня 2014 14:48:20 мій файл douglas.conf має 644 root / wheel та наступне:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

мій http.conf має таке:

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

Все, що було б вдячно. Я спробував відкотитися до попереднього файлу http.conf, але існує ряд відмінностей, що стосуються модулів, які потрібно завантажити. Цілком можливо, що я пропустив модуль, але у журналі немає скарг.


Незважаючи на те , що відповідь chrisMc не сприймається , майбутні споживачі також можуть прочитати встановлення Apache, PHP та MySQL на Mac OS X Yosemite .
Джейсон МакКрірі

Відповіді:


17

У вашому користувачі .conf (douglas.conf) замініть:

Order allow,deny
Allow from all

З:

Require all granted

Різниця полягає в тому, як apache 2.4 обробляє дозволи

http://httpd.apache.org/docs/2.4/upgrading.html


Я змінив налаштування в httpd.conf та douglas.conf, але все одно отримую ту ж помилку
new2code

1
Не забудьте перезапустити Apache
Thomas Edwards

Це здорово, хоча старий порядок / дозвіл / заборона все ще працює, якщо access_compatмодуль увімкнено. Я думаю, мені було б краще помилитися і виправити налаштування, а не відпускати його довше зі старими конфігураціями.
Алексіс Вілке

11

У мене був і той самий випуск, і виправили це:

  1. Завантажте модуль userdir, знайшовши наступні рядки в httpd.conf та коментуючи його: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Редагуйте додатковий / httpd-userdir.conf , знайдіть і скаментуйте такий рядок: Include /private/etc/apache2/users/*.conf

  3. Відредагуйте користувачів / *. Conf , додайте Require localта додайте +(або -) символ перед усіма параметрами в рядку параметрів, наприклад: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>


1
Це (саме це, нічого більше, нічого менше) не спрацювало для мене, коли нічого іншого не зробили. Дякую!
orome

1

Я відчував те ж саме, але на Mavericks після застосування оновлення безпеки від пари днів тому. Mavericks все ще використовує Apache 2.2, тому це не було проблемою config chrisMc, хоча, схоже, він прав, і вам потрібно буде також змінити це.

У моєму випадку я вперше вирішив основну проблему, прокоментувавши попередньо додану лінію модуля Homebrew PHP 5.4. У httpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

І замість цього вибираю модуль PHP за замовчуванням, який я раніше коментував:

LoadModule php5_module libexec/apache2/libphp5.so

Це було виправлено, але щодо того, чому версія Homebrew зламалася, я думаю, можливо, системна бібліотека, з якої вона була складена, була оновлена ​​в оновленнях безпеки. Коли я забіг, php -vмені icu4cнадійшло попередження про бібліотеку, яка не завантажена.

Отже, я просто перекомпілював PHP і він знову працював. У моєму випадку я просто зробив

brew uninstall php54
brew install php54

Тоді модуль Homebrew можна було знову включити.


1

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

Я бачив, що дозволи, про які говорив перший плакат, є частиною проблеми, але я все ще маю проблеми з особистими налаштуваннями, використовуючи файл user.conf. Ця установка використовувала віртуальні хости. Я не маю уявлення про те, що доморощений зробив, що вирішило проблему. Напевно, я би назвав це проблемою, оскільки вона не виправила мою оригінальну проблему, а саме те, що я не можу отримати доступ до нічого на веб-сервері за допомогою файлу user.conf.


Дивовижно! Ключовим для мене було просто прокоментування рядків 220-221 ( # AllowOverride noneі # Require all denied), які, очевидно, нещодавно додані в Йосеміті.
MarkHu

0

У httpd.confкоментарі:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

І в /etc/apache2/extra/httpd-userdir.confкоментарі:

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

Потім перезапустіть Apache.


0

Наведені вище відповіді працюють при встановленні запасу. Якщо ні, то кілька речей, які можуть допомогти:

  1. У вашій файловій системі папка повинна бути точно Сайтами з великим літером S (ім'я папки жорстко кодується в модулі userdir, воно не може бути різним) Її дозволи повинні бути:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. <Directory…>Конфігурація застосовується поверх нього, тому він повинен відповідати імені папки точно, в тому числі і в разі (ми йдемо від Linux ...).

    Дозволи /etc/apache2/users/username.confфайлу:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

Тому переконайтеся, що рядок <Directory "/Users/user/Sites/">посилається саме на потрібну папку з правильним іменем користувача (з користувачем, що відповідає імені файлу конфігурації), включений регістр, а Sitesпапка існує саме так, як є, включена в регістр.


0

У моєму випадку апаш версія 2.4.27.

Вирішено проблему після зміни мого файлу httpd-vhosts.conf з каталогу " /etc/apache2/extra/httpd-vhosts.conf ".

З

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

До

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.