403 Mac OS X v10.7의 Apache에서 웹 루트에 대해 금지되었지만 사용자 디렉토리에 액세스 할 수 있습니다.


2

http : // localhost /에 액세스 하면 403 Forbidden이 표시되지만 http : // localhost / ~ username에 액세스하면 페이지가 표시됩니다. 내가 시도한 것 :

  • 오류 로그 확인
  • 원본 httpd conf 파일로 교체
  • DocumentRoot를 내 사용자 디렉토리로 변경 (에 액세스 할 수 있으면 모두 작동해야 함 ~username)

사용자 디렉토리가 금지되어있는 사람들을 가리키는 30 개 이상의 Q & A 사이트를 보았습니다. 나는 반대의 문제가있어서 머리카락을 찢어 버리고 있습니다.

답변:


3

나는 실제로 오늘 같은 문제 (적어도 동일한 증상)에 부딪쳤다. 필자의 경우 /var/log/apache2/error_log다음과 같은 오류를 보았습니다.

[Mon Mar 19 15:30:30 2012] [error] [client ::1] Directory index forbidden by Options directive: /var/empty/

그런 다음 /etc/apache2/httpd.conf이 두 줄을보고…

<IfDefine MACOSXSERVER>
DocumentRoot /var/empty

… 그리고 나중에,이 라인들…

<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
# Some comments were here
DocumentRoot "/Library/WebServer/Documents"

MACOSXSERVER이 기계는 서버 기계 가 아니므 로 어떻게 든 정의해서는 안되는 것으로 생각했습니다 . 그런 다음이 컴퓨터에 Lion Server 관리 도구를 설치해야한다는 사실을 기억했으며, Apple의 설명서에 따르면 관리자 컴퓨터의 Mac App Store에서 Lion Server 패키지를 설치하지 않았습니다. 서버 머신으로 고안되었습니다. 어쩌면 실제로 내 관리 컴퓨터를 Mac OS X Server 컴퓨터로 변형했습니다. 다시 확인하기 위해 다음을 실행했습니다.

$ sw_vers
제품 이름 : Mac OS X 서버
제품 버전 : 10.7.3
빌드 버전 : 11D50

물론 내가 원하는 것은 서버 관리 도구를이 컴퓨터에 두는 것만으로도 내 컴퓨터는 이제 Mac OS X Server로 자체보고되었습니다.

아파치 문제로 돌아가서 결국 /etc/apache2/ReadMe.txtMac OS X 관련 아파치 정의에 대해 설명했습니다 (더 자세한 정보는 직접 읽으십시오!).

MACOSXSERVER, WEBSHARING_ON, WEBSERVICE_ON과 같은 IfDefine 설정은 /System/Library/LaunchDaemons/org.apache.httpd.plist에있는 Apache의 시작 plist에 의해 설정되거나 설정되지 않습니다.

그래서 필자의 경우 실제로 컴퓨터를 서버로 간주하지 않기 때문에 launchd plistApache가 정의되지 않도록 편집하여 수정하기로 결정했습니다. MACOSXSERVER시스템 공유 패널의 웹 공유 확인란 에서이 내용을 제어하고 싶습니다. Server.app가 아닌 환경 설정.

그래서이 파일을 편집했습니다.

/System/Library/LaunchDaemons/org.apache.httpd.plist

ProgramArguments배열 에서이 행을 제거하거나 주석 처리하려면 다음을 수행하십시오 .

<string>-D</string>
<string>MACOSXSERVER</string>

다음과 같이 SGML 주석 시작 / 종료 마커를 앞뒤에 배치하여 주석을 달았습니다.

<!--
<string>-D</string>
<string>MACOSXSERVER</string>
-->

해당 plist파일에 대한 변경 사항을 저장 한 후 Apache를 정상적으로 다시 시작했습니다.

sudo apachectl graceful

… 그리고 더 좋았습니다!

브라우저에서 내가 가져 오려는 페이지에 대해 "403 Forbidden"결과를 캐시 한 경우 브라우저에서 한 두 번 페이지를 다시로드해야 할 수도 있습니다.

이것이 귀하의 문제의 정확한 근본 원인이 아니더라도, 귀하의 상황을 파악하는 데 도움이되기를 바랍니다.


Lion Server에 대해 알아야 할 사항은 웹 공유가 활성화 된 상태에서 Server.app의 웹 서비스가 시작되면 웹 서비스의 DOCUMENT_ROOT는 / var / empty입니다. 이를 방지하려면 웹 서비스를 시작하기 전에 먼저 시스템 환경 설정> 공유> 웹 공유를 비활성화해야합니다.
Eric3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.