Ошибка Apache localhost 403 с помощью Yosemite
Я только что установил Mac OS X Yosemite. Я настроил Apache и chmodded "users/user/Sites" на 755. Когда я попал в localhost, я получил 403 Forbidden "You don't have permission to access / on this server"
. То же самое происходит с любыми другими сайтами, которые я добавляю в файл моих хостов.
Я попытался настроить каталоги пользователей с помощью этого сообщения. Ребята из этого поток MacRumors знают, что есть проблема с Apache, но не предложили много предложений.
Разрешения моего каталога выглядят следующим образом
drwxr-xr-x 29 root wheel 1054 Aug 11 07:30 /
drwxr-xr-x 6 root admin 204 Aug 11 07:29 /Users/
drwxr-xr-x+ 26 zachshallbetter staff 884 Aug 11 11:57 /Users/zachshallbetter/
0: group:everyone deny delete
drwxr-xr-x 5 zachshallbetter staff 170 Aug 11 10:16 /Users/zachshallbetter/Sites
Кто-нибудь может предложить какие-либо предложения или помочь? Вот ссылки на мой хосты и httpd.conf и журналы ошибок для справки.
Ответы
Ответ 1
Вы НЕ хотите открывать весь свой жесткий диск для процесса веб-сервера. Фактически, строки 215-217 из httpd.conf
говорят:
# Deny access to the entirety of your server filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
Apache 2.4 (OSX 10.10 Yosemite) имеет другую структуру от Apache 2.2 (OSX 10.9) для Директивы каталога в модуле mod_authz_core.
РЕДАКТИРОВАТЬ: Если вы настраиваете Apache из START, следуйте этой инструкции для настройки apache и php на OSX 10.10 Yosemite.
Предполагая, что вы уже включили mod_userdir.so
, ваша проблема находится в вашем пользовательском .conf файле (/etc/apache2/users/username.conf
), отредактируйте (или добавьте) следующее.
Apache 2.2:
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.9 / Apache 2.2
Order from deny, allow
</Directory>
Apache 2.4
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.10 / Apache 2.4
Require all granted
</Directory>
Ответ 2
Отредактируйте файл:
/private/etc/apache 2/httpd.conf
в строке 250 (в Йосемите):
Options FollowSymLinks Multiviews
в
Options FollowSymLinks Multiviews Indexes
затем в терминальном запуске:
sudo apachectl restart
Ответ 3
Это может быть очень поздний ответ, но я следовал большинству решений, ни один из них не помог мне по разным причинам. Таким образом, я сделал reset мое устройство как новую ОС Yosemite, чтобы получить этот локальный хост, работающий на Mac Yosemite (с помощью Symlinks),
Шаги я сделал точно:
sudo nano /etc/apache2/httpd.conf
Раскомментируйте следующие строки:
#LoadModule php5_module libexec/apache2/libphp5.so
to
LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
to
LoadModule userdir_module libexec/apache2/mod_userdir.so
#Include /private/etc/apache2/extra/httpd-userdir.conf
to
Include /private/etc/apache2/extra/httpd-userdir.conf
Сохранить и выйти (Ctrl + X нажмите Enter и нажмите Y и введите снова)
sudo nano /etc/apache2/extra/httpd-userdir.conf
и раскомментируйте следующую строку в строке 16:
#Include /private/etc/apache2/users/*.conf
to
Include /private/etc/apache2/users/*.conf
Сохранить и выйти (Ctrl + X нажмите Enter и нажмите Y и введите снова).
Теперь перейдите в папку Apache Users, чтобы проверить, что ваш файл конфигурации существует или нет
cd /etc/apache2/users/
если у вас нет файла конфигурации в этой папке, создайте его
sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf
Замените <YOUR USERNAME>
именем вашего устройства (введите whoami
в терминал и введите это имя).
после создания файла .conf, скопируйте ниже строки в этот файл
<Directory "/Users/<YOUR USERNAME>/Sites/">
AddLanguage en .en
LanguagePriority en fr de
ForceLanguagePriority Fallback
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from localhost
Require all granted
</Directory>
сохранить и выйти
Теперь перезапустите apache
sudo apachectl restart
Теперь перейдите в свой браузер и наберите localhost, он будет работать как ожидалось,
Как примечание: если он не работает даже после перезагрузки компьютера
создайте index.html как точно index.html.en, который вы должны найти здесь:
open /Library/Webserver/Documents/
щелкните правой кнопкой мыши на index.html.en и продублируйте его в index.html, оставив оригинал, как есть
повторите попытку в браузере, и если у вас есть успех, вы можете удалить дублированный файл
Чтобы быть ясным, оставьте исходный файл index.html.en
там, где он есть, нетронутый и невредимый на протяжении всего этого шага.
Не уверен, почему мне пришлось взять этот загадочный объезд - возможно, что-то локальное для моей машины, но если у вас возникли проблемы после того, как вы следуете приведенному выше руководству, посмотрите, помогает ли это.
SymLinks:
Если у вас есть успех, в браузере вы должны увидеть
It works!
Теперь создайте символическую ссылку для любого вашего проекта.
ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>
Например, если у вас есть папка проекта в папке "Документы", то укажите веб-сайт в индексный файл
ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink
вам может потребоваться разрешение на создание символической ссылки (используйте команду выше с Sudo)
Настройте apache для отслеживания символических ссылок (спасибо tomvon, у меня недостаточно баллов, чтобы проголосовать за вас)
sudo nano /private/etc/apache2/httpd.conf
в строке 250 (в Йосемите):
Options FollowSymLinks Multiviews
в
Options FollowSymLinks Multiviews Indexes
затем в терминальном запуске:
sudo apachectl restart
Теперь перейдите в localhost/projectlink
, чтобы увидеть, отображается ли ваш индексный файл вашего проекта в браузере.
Счастливое кодирование.
Ответ 4
Совет в этой статье помог мне.
В частности, раздел "Только Йосемити":
Во-первых, существует директива, которая помогает защитить ваш компьютер, запретив доступ ко всей файловой системе по умолчанию. Ill покажет вам, как удалить эту директиву, так как я нахожу это проще на машине, предназначенной для разработки. Раздел кода работает от строки от 220 до 223. Вы можете прокомментировать (поместите "# перед каждой строкой" ) или просто удалите этот раздел.
И раздел...
<Directory />
AllowOverride none
Require all denied
</Directory>
Примечание:
Как показали другие подробности, описанный выше метод может быть небезопасным.
Ответ 5
Есть две возможности, почему ваш localhost
запрещен, во-первых, это может быть потому, что ваш параметр apache
неверен, а во-вторых, может быть, потому что вы установили vhost
, и вы тоже забыли о наборе localhost
-
sudo nano /etc/apache2/extra/httpd-vhosts.conf
- Добавить этот код
`
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Users/username/Sites"
<Directory "Users/username/Sites">
Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
</Directory>
</VirtualHost>
- Сохраните его и перезапустите apache
`
sudo apachectl restart
это должны быть работы:)
Ответ 6
Предложения могут быть сосредоточены на вашем собственном пользовательском conf в apache, но по умолчанию эта конфигурация может вообще не загружаться.
Измените конфигурацию модуля userdir:
sudo vi/etc/apache2/extra/httpd-userdir.conf
Раскомментируйте включение файлов конфигурации каталога пользователя:
Include /private/etc/apache2/users/*.conf
Убедитесь, что у вас есть конфигурация каталога пользователя в соответствии с нашим собственным именем пользователя:
sudo vi/etc/apache2/users/.conf
Убедитесь, что у вас есть хорошая настройка для вашего домашнего каталога:
DocumentRoot "/Users/<username>/Sites/"
<Directory "/Users/<username>/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Перезапустить apache (веб-сервер)
sudo apachectl restart
Проверьте свой сайт!
Ответ 7
Просто создайте папку "Сайты" в папке пользователя. Перейдите в
cd ~
mkdir 'Сайты'