Я изменил конфигурацию 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 запрещено»
Что мне не хватает?
userdir
модуль:sudo a2enmod userdir
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 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
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