Apache가 홈 디렉토리의 폴더에 액세스 할 수 없습니다 Order allow,deny

내 홈 디렉토리의 폴더를 가리 키도록 Apache 구성을 변경했습니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

나는 심지어 /home/dbugger/html777을 허락했다. 그러나 나는 여전히 http://localhost“403 Forbidden” 에서 같은 에러 메시지를 받는다 .

내가 무엇을 놓치고 있습니까?



답변

이것은 나를 위해 일했다

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

중요한 것은 변화하는 것이 었습니다

Order allow, deny

Require all granted


답변

userdir모듈 활성화 :

sudo a2enmod userdir

사용자 디렉토리에서 PHP 실행을 활성화하십시오.

sudo nano /etc/apache2/mods-available/php5.conf

(또는 php7.0을 사용하는 경우)

sudo nano /etc/apache2/mods-available/php7.0.conf

이 부분을 주석 처리하십시오 ( #각 줄의 시작 부분에 입력 ).

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Ctrl+ X를 눌러 저장

디렉토리 목록을 활성화하십시오.

sudo nano /etc/apache2/apache2.conf

이거 추가 해봐:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Ctrl+ X를 눌러 저장


아파치를 다시 시작하십시오 ( sudo여기에서도 필요함).

sudo service apache2 restart

이제 PHP 파일을 /home/yourname/public_html디렉토리에 넣고
http://localhost/~yourname웹 브라우저에서 이동 하십시오.


답변

Apache는 user로 실행됩니다 www-data. 집에 대한 실행 권한이 없으면 아파치는 파일을 읽을 수 없습니다.

집의 그룹을 www-data다음으로 변경하십시오 .

chgrp www-data /home/dbugger

그리고 홈 디렉토리를 통과 할 수있는 권한 만 부여하십시오.

chmod g+x /home/dbugger

다음과 /home/dbugger/html같은 퍼미션을 제한 할 수도 있습니다 .

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html


답변

홈 디렉토리를 사용하여 개발 환경을 호스팅하려는 경우 최소한 일부 응용 프로그램에 대한 쓰기 권한이 필요한 경우에는 권한을 변경할 필요가 없습니다. 아파치 mod_userdir 모듈이 필요 하고 가상 호스트를 사용하기 위해 http : //domain.local/~user_name/dir_name/ * 와 같이 / home / user_name / public_html / *에 액세스 할 수 있습니다. mod_userdir 모듈을 사용하려면 sym을 작성해야합니다. 이 같은 링크 :

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart


답변