Xampp и Apache: псевдоним «доступ запрещен»

#linux #apache #permissions #xampp #alias

#linux #apache #разрешения #xampp #псевдоним

Вопрос:

Я только что установил Xampp в своей системе Arch Linux. Что я хочу сделать сейчас:

Мой рабочий каталог PHP находится в моей домашней папке (в /home/luke /PHP). Я хочу, чтобы Apache получил доступ к этим двум файлам, поэтому я следовал руководству по установке Xampp на Arch Linux Wiki и создал псевдоним для этого каталога. Вот как выглядит мой httpd.conf (часть псевдонима):

 Alias /PHP /home/luke/PHP
<directory /home/luke/PHP>
    AllowOverride FileInfo Limit Options Indexes
    Order allow,deny
    Allow from all
</directory>
  

После этого я изменил разрешения для домашней папки / luke / PHP на 777 (используя chmod). Я перезапустил Xampp и получил 403, когда попытался перейти вhttp://localhost/PHP

Сервер Apache работает от имени http-пользователя (который существует) и от имени http-группы. Итак, я добавил http-пользователя в свою группу (группу luke от моего пользователя, используя chown-tool). Я перезапустил сервер, та же ошибка.

Вот (часть) файла error_log:

 [Sun Apr 24 18:05:37 2011] [error] [client 127.0.0.1] (13)Keine Berechtigung: access to /PHP/ denied
[Sun Apr 24 18:10:30 2011] [error] [client 127.0.0.1] (13)Keine Berechtigung: access to /PHP/ denied
[Sun Apr 24 18:10:30 2011] [error] [client 127.0.0.1] (13)Keine Berechtigung: access to /PHP/ denied
  

Итак, созданный мной псевдоним должен работать, но что мне нужно сделать, чтобы сделать мою /home /luke / PHP-папку доступной для сервера Apache?

Я также пытался создать символическую ссылку в htdocs-folder, но это тоже не сработало.

Ответ №1:

Apache должен иметь возможность :

  • Чтение из вашего каталога / home / luke / PHP — вы, по-видимому, это уже разрешили
  • Пройдите по каталогам, которые являются родительскими для этого каталога.

Как правило, вам придется предоставить разрешение на выполнение другим пользователям (что означает, что они смогут перемещаться по этому каталогу, чтобы перейти к его дочерним элементам) в вашем домашнем каталоге :

 chmod o x /home/luke
  

Конечно (особенно в многопользовательской среде), вам тогда придется убедиться, что другие пользователи не смогут получить доступ к другим вашим каталогам и файлам — обычно путем удаления всех привилегий, которые group и other могли бы быть у каталогов / файлов в вашем домашнем каталоге.

Комментарии:

1. Я изменил разрешение на выполнение, как вы показали, по-прежнему Apache не открывает файлы в PHP-папке.

2. @Lukas Knuth : возможно, вам придется рекурсивно изменять разрешения как для файлов, так и для каталогов, например: найдите / home/luke -введите f chmod 644 {} ; найдите / home / luke -введите d chmod 755 {} ; и убедитесь, что они принадлежат пользователю apache. Предполагая, что для пользователя и группы apache установлено значение «никто» в вашем файле конфигурации apache и они существуют в вашей системе: chown -R nobody:никто / home /luke

3. Извините, что возвращаюсь к этому только сейчас, но я был в отпуске без своей машины ;). Apache работает под «http»-пользователем и группой. Если я сменю владельца моего PHP-каталога (используя chown), я не смогу записать туда файлы. Я думал, что установка режима папок на 777, чтобы любой мог писать в нем, исправила бы это…

4. «Пройдите по каталогам, которые являются родительскими для этого каталога»: это ключ к этой ошибке. Было очень сложно найти правильный ответ. Конечно, chmod должен быть рекурсивным! Спасибо.

Ответ №2:

Я исправил свою проблему, настроив псевдоним, как показано выше, но установив для пользователя Apache моего пользователя («luke») и оставив группу вне:

 # User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
User luke
#Group http
  

После этого я сменил владельца htdocs — и PHP -Каталога на моего пользователя (luke) и перезапустил LAMPP.

Теперь все работает нормально. Также спасибо Паскалю МАРТИНУ и hornetbzz!