Назад | Перейти на главную страницу

Почему apache не загружает файл с символической ссылкой из conf.d?

У меня есть файл конфигурации apache, который отлично работает, когда он помещается непосредственно в /etc/httpd/conf.d/foo.conf. Однако, когда я перемещаю тот же файл в другое место (например, перемещаю его в /tmp/foo.conf), а затем создаю символическую ссылку с ln -s /tmp/foo.conf /etc/httpd/conf.d тогда apache не работает при запуске с:

httpd: could not open document config file /etc/httpd/conf.d/foo.conf

Я попытался создать файл и режим символической ссылки 777 и попытался изменить их, чтобы они принадлежали пользователю apache.

Кажется, что apache не может загрузить файл исключительно на том основании, что он является символической ссылкой, но я уверен, что успешно использовал символические ссылки на других машинах. Что-то мне не хватает? Есть ли у apache возможность отказаться от загрузки файлов конфигурации, если они являются символическими ссылками?

Операционная система - CentOS 4.4, apache версии 2.0.52.

Включен ли SELinux на этом сервере? Интересно, мешает ли это Apache правильно загружать эту символическую ссылку?

Разрешения для пользователя apache не должны иметь значения, поскольку обычно apache запускается от имени пользователя root, а затем запускает веб-сервер от имени пользователя apache (или любого другого user директива есть). Я считаю, что это должно быть после загрузки файла конфигурации.

Вы можете катить символическую ссылку?

Вместо того, чтобы создавать символическую ссылку из conf.d туда, где она есть, не могли бы вы оставить файл в каталоге conf.d и создать символическую ссылку на файл в conf.d. Пример синтаксиса: ln -s /etc/httpd/conf.d/foo.conf /tmp/foo.conf

В качестве альтернативы используйте жесткую ссылку, чтобы в обоих местах был обычный файл. Один файл с двумя местоположениями. Пример синтаксиса: ln /tmp/foo.conf /etc/httpd/conf.d Обратите внимание, что это будет работать, только если оба местоположения находятся в одной файловой системе.