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

Я изменил конфигурацию 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/html 777. Но я продолжаю получать то же сообщение об ошибке при http://localhost: «403 запрещено»

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

29
задан 28 July 2013 в 07:24

4 ответа

Включить 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 от Вашего веб-браузера.

19
ответ дан 28 July 2013 в 07:24

Вам не нужно менять разрешения, если вы хотите использовать свой домашний каталог для размещения среды разработки, по крайней мере, вам нужны разрешения на запись для некоторых приложений. Вам нужен модуль apache mod_userdir, и вы можете получить доступ к / home / user_name / public_html / * как этот http: //domain.local/~user_name/dir_name/ * для использования виртуальных хостов, чтобы использовать 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
0
ответ дан 28 July 2013 в 07:24

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

0
ответ дан 28 July 2013 в 07:24

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
0
ответ дан 28 July 2013 в 07:24

Другие вопросы по тегам:

Похожие вопросы: