Як дозволити доступ до символьної посилання в моїх ~ / Сайтах / для Apache під Mac OS X Lion 10.7.2


12

Мені потрібно дозволити доступ до каталогу, пов’язаного із символом, в межах ~ / 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. Відредагуйте своє ім'я користувача.conf, розташоване в / private / etc / apache2 / користувачів, і додайте директиву "FollowSymLinks":

    <Каталог "/ Користувачі / вашUserName / Сайти /">
        Параметри Індекси MultiViews FollowSymLinks
        Дозволити пересилку немає
        Наказ дозволяють, заперечують
        Дозволити від усіх
    </Directory>
    
  3. Відредагуйте файл /private/etc/apache2/httpd.conf та переконайтесь, що рядок під "# Віртуальними хостами" не коментується, як-от так:

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

    <VirtualHost *: 80>  
        <Каталог /Users/yourUserName/Sites/MyWebSite.com>
            Параметри + FollowSymlinks + SymLinksIfOwnerMatch
            ДозволитиЗавершити всіх
        </Directory>
      DocumentRoot / Користувачі / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </VirtualHost>
    
  5. Відредагуйте файл / etc / hosts і додайте це вгорі:

    127.0.0.1 MyWebSite.local
    
  6. Зробіть Symlink, щоб зв'язати свій каталог коду з одним у каталозі Сайти.

    ln -s ~ / Код / MyWebSite ~ / Сайти / MyWebSite
    
  7. Перезапустіть апаш


1
Ласкаво просимо до Супер Користувача! Було б непогано включити сюди суттєві частини відповіді та надати посилання лише для подальшого ознайомлення.
slhck

Я перейшов від середовища xampp zend до налаштування mac / apache за замовчуванням і після перезавантаження був мертвим у воді. Крок 2 був ключовим. Дякую!
Shanimal

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. перезапустити апаш

    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 в конф, пам’ятайте, що це значення. Перевірте вміст <Directory "docroot here">...</Directory>розділу на рядок "Параметри". Якщо Параметри відсутні - додайте рядок Options FollowSymLinks, якщо вона існує, але не FollowSymLinks - додайте цей параметр, щоб мати що-небудь подібне Options Indexes FollowSymLinks. Перезапустіть Apache після зміни конфігурації. Результат тесту, напишіть його тут

  2. Прочитайте документи Apache


Привіт, вибачте - Ця відповідь зовсім не допомагає.
robertj

Ви намагалися це зробити ? ви відключили FollowSymLinks в конфігурації Apache, ви повинні ввімкнути на рівні сайту чи каталогів, щоб використовувати символічно пов'язані ресурси
Lazy Badger

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

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

@robertj - Це рішення вашої проблеми. Вам потрібно відредагувати цей файл і змінити його відповідно, як сказав @Lazy_Badger. Він повинен розташовуватися під <Directory /usr/share/web>. Зверніть увагу, що після цього вам потрібно перезапустити apache, використовуючиsudo /usr/sbin/apachectl restart
Стівен Лу

0

Іноді це відбувається, якщо:

  • Ваша вихідна папка знаходиться у файловій системі NTFS
  • Якщо ви використовуєте вже створену папку з різними дозволами, ймовірно, від попереднього власника чи інсталяції.

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


Наскільки це стосується ОП з використанням OSX?
JoshP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.