#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!