Mac OS X을 Yosemite로 업그레이드 한 후 서버 구성으로 인해 Apache 클라이언트가 거부 됨


12

나는 이것이 다른 질문과 비슷해 보이지만 요세미티는 업그레이드와 함께 아파치 구성으로 무언가를 변경 한 것으로 보입니다. 내 오류 로그에 "서버 구성에 따라 클라이언트가 거부되었습니다 : /Users/douglas/Sites/testpatient.php"

Apache 버전 : MacBook-Pro : apache2 douglas $ apachectl -v 서버 버전 : Apache / 2.4.9 (Unix) 서버 내장 : 2014 년 9 월 9 일 14:48:20 내 douglas.conf 파일은 644 루트 / 휠이며 다음과 같습니다.

<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 의 대답이 제자리에 있지만 미래비틀 거리는 사람Mac OS X Yosemite에 Apache, PHP 및 MySQL 설치 를 읽을 수도 있습니다 .
Jason McCreary

답변:


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
아파치를 다시 시작하는 것을 잊지 마세요
토마스 에드워즈

access_compat모듈을 켠 경우 이전 주문 / 허용 / 거부가 여전히 작동하지만이 방법은 훌륭 합니다. 이전 구성으로 더 오래 사용하지 않고 오류가 발생하고 설정을 수정하는 것이 더 좋을 것이라고 생각합니다.
Alexis Wilke

11

나는 같은 문제가 있었고 그렇게하여 수정했습니다.

  1. httpd.conf 에서 다음 행을 찾아 주석 처리를 제거 하여 userdir 모듈을로드하십시오 . 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
다른 일이 없었을 때, 이것은 (정확히 이것, 더 이상, 더 적지 않은) 나를 위해 일했습니다. 고마워!
orome

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)을 주석 처리하는 것이 었습니다 .
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.

" /etc/apache2/extra/httpd-vhosts.conf "디렉토리 에서 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.