Mac OS X Lion 10.7.2에서 Apache를위한 ~ / Sites /의 기호 링크에 액세스하는 방법


12

Apache에서 ~ / Sites 내의 sym-linked 디렉토리에 대한 액세스를 허용해야합니다. 나는 이와 같은 디렉토리를 Symlinked

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

이제 GET 요청을 실행할 때마다 403 응답이 표시됩니다.

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

아파치에게 심볼릭 링크 된 디렉토리에 액세스 할 수 있도록 알리는 방법과 로컬 호스트에서 발생한 요청에 대해서만 아파치에게 알리도록하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

친애하는

로버트

답변:


10

여기에 내가하려는 일을 정확히 수행하는 방법을 알아 내려고 할 때 쓴 블로그 게시물 이 있습니다.

  1. 시스템 프리 프레즌스 —> 공유 —> 웹 공유 활성화로 이동하여 MAC에서 웹 공유를 활성화하십시오.
  2. / private / etc / apache2 / users에있는 username.conf 파일을 편집하고“FollowSymLinks”지시문을 추가하십시오.

    <디렉토리 "/ Users / yourUserName / Sites /">
        옵션 인덱스 MultiViews FollowSymLinks
        AllowOverride 없음
        주문 허용, 거부
        모두 허용
    </ Directory>
    
  3. /private/etc/apache2/httpd.conf 파일을 편집하고 다음과 같이“# Virtual hosts”아래 행이 주석 처리되지 않았는지 확인하십시오.

    /private/etc/apache2/extra/httpd-vhosts.conf 포함
    
  4. /private/etc/apache2/extra/httpd-vhosts.conf 파일을 편집하고 다음을 추가하십시오.

    <VirtualHost * : 80>  
        <디렉토리 /Users/yourUserName/Sites/MyWebSite.com>
            옵션 + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride All
        </ Directory>
      DocumentRoot / 사용자 / 사용자 이름 / 사이트 / MyWebSite
      ServerName MyWebSite.local
    </ VirtualHost>
    
  5. / etc / hosts 파일을 편집하여 맨 위에 추가하십시오 :

    127.0.0.1 MyWebSite.local
    
  6. 코드 디렉토리를 Sites 디렉토리에 링크하기 위해 Symlink를 만드십시오.

    ln -s ~ / 코드 / MyWebSite ~ / Sites / MyWebSite
    
  7. 아파치 다시 시작


1
슈퍼 유저에 오신 것을 환영합니다! 좋은 것입니다 여기에 해답의 본질적인 부분을 포함, 오직 미래의 참조에 대한 링크를 제공합니다.
slhck

나는 xampp zend 환경에서 기본 mac / apache 설정으로 갔고 다시 시작한 후에 물에서 죽었습니다. 2 단계가 핵심이었습니다. 감사합니다!
Shanimal

2

실제로 Emjay의 답변에서 첫 두 단계와 아파치 재시작이 필요합니다. 다음은 나를 위해 일한 것입니다.

  1. 사용 웹 공유 로 이동하여 MAC에이 시스템 Prefrences -> 공유 -> 확인이 가능 웹 공유를

  2. username.conf에있는 파일을 편집 /private/etc/apache2/users하고 FollowSymLinks 지시문을 추가하십시오 .

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. 아파치 설정 확인

    sudo apachectl -t

  4. 아파치를 다시 시작

    sudo apachectl 다시 시작

이제 Apache는 Sites디렉토리 아래의 심볼릭 링크를 제공합니다 .


1

403 forbidden오류 가 발생했습니다. 내 문제를 해결 한 것은에서 httpd-vhosts.conf아래 구성을 바꿨습니다.

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

<Location "/modulename">
  Require all granted
</Location>

모든 위치 태그에 대해 동일했습니다. 권한 문제가 해결되었습니다.


0

Options FollowSymLinks 적절한 컨테이너에 대한 httpd.conf

  1. conf에서 DocumentRoot 문자열을 찾아 값을 기억하십시오. <Directory "docroot here">...</Directory>옵션 문자열에 대한 섹션 내용을 확인하십시오 . 옵션 누락-문자열 추가 Options FollowSymLinks, 존재하지만 FollowSymLinks를 따르지 않은 경우 :이 매개 변수를 추가하여 smth와 유사하게하십시오 Options Indexes FollowSymLinks. 구성을 수정 한 후 Apache를 다시 시작하십시오. 시험 결과, 여기에 쓰십시오

  2. 아파치 문서 읽기


안녕하세요, 죄송합니다.이 답변은 전혀 도움이되지 않습니다.
robertj

당신이 시도 했나 그것을? Apache 구성에서 FollowSymLinks를 비활성화 한 경우 심볼릭 링크 된 리소스를 사용하려면 사이트 또는 디렉토리 수준에서 활성화해야합니다
Lazy Badger

~ 안에 파일에 대한 권한을 확인하고 ~ 후에 DirectoryIndex 파일이 있는지 확인하십시오. 작업을 순차적으로 해결하고 모든 가능성을 확인 하십시오
Lazy Badger

1
다시-나는 당신의 의견으로 아무것도 만들 수 없습니다. 나는 아파치 (최근 6 시간 동안 인터넷 검색을 제외하고)에 관한 완전히 새로운 꿀벌 이다. 나는 적절한 컨테이너가 무엇인지 전혀 모른다 . 실제로 도움이되는 것은 httpd.conf 및 httpd-vhost.conf를 구성하는 구체적인 예입니다.
robertj

@robertj-문제의 해결책입니다. @Lazy_Badger가 말한 것처럼 해당 파일을 편집하고 수정해야합니다. 아래에 있어야합니다 <Directory /usr/share/web>. 나중에 다음을 사용하여 아파치를 다시 시작해야합니다.sudo /usr/sbin/apachectl restart
Steven Lu

0

때로는 다음과 같은 경우에 발생합니다.

  • 원본 폴더가 NTFS 파일 시스템에 있습니다
  • 이미 생성 된 폴더를 사용중인 경우 다른 소유자 (이전 소유자 또는 설치)와 다른 권한을 가진 폴더를 사용하는 경우

ext4 파일 시스템에 새 폴더를 만들고에 대한 심볼릭 링크를 만들어이 문제를 해결했습니다 /var/www.


OSX를 사용하는 OP와 어떤 관련이 있습니까?
JoshP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.