Apache не может получить доступ к папкам в моем домашнем каталоге

19

Я изменил конфигурацию Apache, чтобы указать на папку в моем домашнем каталоге:

<VirtualHost *:80>
    ServerAdmin [email protected]

    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/html 777. Но я все еще получаю то же сообщение об ошибке в http://localhost : «403 Запрещено»

Что мне не хватает?

    
задан Enrique Moreno Tent 28.07.2013 в 05:24
источник

4 ответа

14

Это сработало для меня

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

Важным битом было изменение

Order allow, deny

к

Require all granted 
    
ответ дан szydan 25.04.2014 в 16:47
источник
15

Включить userdir module:

  

sudo a2enmod userdir

Включить выполнение PHP в каталоге пользователя:

  

sudo nano /etc/apache2/mods-available/php5.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 , чтобы сохранить

Перезапустите apache (здесь также требуется sudo):

sudo service apache2 restart

Теперь поместите ваши php-файлы в каталог / home / yourname / public_html и перейдите на страницу Ссылка от ваш веб-браузер.

    
ответ дан David Greene 31.08.2014 в 02:10
9

Apache работает как пользователь www-data . Если у вас нет разрешения на выполнение в вашем доме, apache не сможет прочитать какой-либо файл.

Измените группу вашего дома на 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
    
ответ дан Eric Carvalho 28.07.2013 в 05:38
1

Вам не нужно изменять разрешения, если вы хотите использовать домашний каталог для размещения среды разработки, по крайней мере, вам нужны права на запись для некоторых приложений. Вам нужен модуль apache mod_userdir, и вы можете получить доступ к / home / user_name / public_html / * как Ссылка * для использования виртуального хосты, чтобы использовать модуль mod_userdir, вам нужно создать символическую ссылку следующим образом:

$ 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
    
ответ дан user1916831 28.07.2013 в 06:13