клиент 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,

Это круто, хотя старый Order / Allow / Deny все еще работает, если у вас access_compatвключен модуль. Я думаю, что было бы лучше для меня, чтобы получить ошибки и исправить мои настройки, вместо того, чтобы позволить дольше работать со старыми конфигами.
Алексис Уилк

11

У меня тоже была такая же проблема, и я исправил ее так:

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

  2. Отредактируйте extra / httpd-userdir.conf , найдите и раскомментируйте следующую строку: Include /private/etc/apache2/users/*.conf

  3. Отредактируйте users / *. 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
Это (именно это, ни больше, ни меньше) работало для меня, когда больше ничего не делалось. Спасибо!
Оромэ

1

Я испытал то же самое, но на Mavericks после применения обновления для системы безопасности пару дней назад. Mavericks по-прежнему использует Apache 2.2, поэтому проблема 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), которые, по-видимому, были недавно добавлены в Yosemite.
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. В вашей файловой системе папка должна быть точно Sites с заглавной буквы 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

В моем случае apache версии 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.