Ошибка 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 'Сайты'