Как разрешить доступ к символической ссылке в моих ~ / Сайтах / для Apache под Mac OS X Lion 10.7.2


12

Мне нужно разрешить доступ к каталогу, связанному с sym, в ~ / Sites из моего Apache. Я Symlinked каталоги, как это

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

Теперь, когда я запускаю запрос GET, я получаю ответ 403

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

Как я могу сказать Apache разрешить доступ к каталогу с символическими ссылками и как я могу сказать Apache разрешить это только для запросов, запущенных с localhost.

Любая помощь очень ценится.

С наилучшими пожеланиями

robertj

Ответы:


10

Вот запись в блоге, которую я написал, когда пытался понять, как сделать именно то, что вы пытаетесь сделать.

  1. Включите веб-общий доступ на MAC, перейдя в Системные настройки -> Общий доступ -> Установите флажок Включить веб-общий доступ
  2. Отредактируйте файл username.conf, расположенный в / private / etc / apache2 / users, и добавьте директиву FollowSymLinks:

    <Directory "/ Users / yourUserName / Sites /">
        Опции Индексы MultiViews FollowSymLinks
        AllowOverride Нет
        Заказать разрешить, отказать
        Разрешить от всех
    </ Directory>
    
  3. Отредактируйте файл /private/etc/apache2/httpd.conf и убедитесь, что строка «# Виртуальные хосты» не закомментирована, например:

    Включить /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Отредактируйте файл /private/etc/apache2/extra/httpd-vhosts.conf и добавьте:

    <VirtualHost *: 80>  
        <Directory /Users/yourUserName/Sites/MyWebSite.com>
            Варианты + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride All
        </ Directory>
      DocumentRoot / Пользователи / yourUserName / Сайты / MyWebSite
      ServerName MyWebSite.local
    </ VirtualHost>
    
  5. Отредактируйте файл / etc / hosts и добавьте его вверху:

    127.0.0.1 MyWebSite.local
    
  6. Создайте символическую ссылку, чтобы связать ваш каталог с кодом в каталоге сайтов.

    ln -s ~ / Code / MyWebSite ~ / Сайты / MyWebSite
    
  7. Перезапустите Apache


1
Добро пожаловать в Супер пользователя! Было бы неплохо включить основные части ответа здесь и предоставить ссылку только для дальнейшего использования.
Slhck

Я перешел из среды xampp zend к настройке mac / apache по умолчанию, и после перезагрузки он перестал работать. Шаг 2 был ключевым. Спасибо!
Shanimal

2

На самом деле необходимы только первые 2 шага из ответа Эмджая плюс перезапуск апача, вот что сработало для меня:

  1. Включите веб-общий доступ на MAC, перейдя в « Системные настройки» -> « Общий доступ» -> « Включить включенный общий веб-доступ».

  2. Отредактируйте username.confфайл, расположенный в, /private/etc/apache2/usersи добавьте директиву FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. проверьте настройки apache

    sudo apachectl -t

  4. перезапустить Apache

    перезагрузка sudo apachectl

Теперь Apache будет обслуживать символические ссылки в вашем Sitesкаталоге.


1

Я получаю 403 forbiddenошибку. Что решило мою проблему в httpd-vhosts.conf, я заменил приведенный ниже конфиг

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

с

<Location "/modulename">
  Require all granted
</Location>

Сделал то же самое для всех тегов Location. Это решило вопрос разрешения.


0

Options FollowSymLinks в httpd.conf для соответствующего контейнера

  1. Найдите строку DocumentRoot в conf, запомните ее значение. Проверьте содержимое <Directory "docroot here">...</Directory>раздела для строки параметров. Если параметры отсутствуют - добавить строку Options FollowSymLinks, если существует, но не имеет FollowSymLinks - добавить этот параметр, чтобы получить что-то подобное Options Indexes FollowSymLinks. Перезапустите Apache после изменения конфигурации. Результат теста, напишите здесь

  2. Читайте документы Apache


Привет, извините - Этот ответ не помогает вообще.
Роберт

Вы пытались это сделать ? Вы отключили FollowSymLinks в конфигурации Apache, вы должны включить на уровне сайта или каталога, чтобы использовать ресурсы с символическими ссылками
Lazy Badger

и проверьте разрешения для файлов внутри ~, наличие файла DirectoryIndex после него: решайте задачи последовательно, проверяя все возможности
Lazy Badger

1
опять же - я не могу ничего сделать из ваших комментариев. Я абсолютно новичок в отношении Apache (кроме того, что я гуглял за последние 6 часов), я просто понятия не имею, что такое соответствующий контейнер. Что было бы действительно полезно, так это конкретный пример настройки httpd.conf и httpd-vhost.conf.
Роберт

@robertj - это решение вашей проблемы. Вам нужно отредактировать этот файл и соответственно изменить его, как сказал @Lazy_Badger. Он должен быть расположен под <Directory /usr/share/web>. Обратите внимание, что после этого вам нужно перезапустить Apache, используяsudo /usr/sbin/apachectl restart
Стивен Лу

0

Иногда это происходит, если:

  • Ваша исходная папка находится в файловой системе NTFS
  • Если вы используете уже созданную папку с другими правами доступа, возможно, от предыдущего владельца или установки.

Я решил эту проблему, создав новую папку в файловой системе ext4 и создав символическую ссылку на /var/www.


Какое это имеет отношение к OP с использованием OSX?
JoshP
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.