zaLinux.ru

Решение проблемы с ошибкой Symbolic link not allowed или link target not accessible


Если приложение на сервере не работает так, как от него ожидается, то начать следует с просмотра логов ошибок.

tail /var/log/httpd/error_log
# ИЛИ
tail /var/log/apache2/error.log

Если у вас несколько виртуальных хостов, то вполне возможно, что вы указали собственный файл лога для каждого хоста. Поэтому вышеприведённую команду подправьте под ваши условия.

Если там вы видите ошибку

Symbolic link not allowed or link target not accessible

Это означает, что сервер пытается обратиться к файлу по символьной ссылке, но:

  • либо возможность следовать по символьным ссылкам отключена в настройках веб-сервера
  • либо сервер не имеет прав доступа к каталогу, в который ведёт символьная ссылка.

Начнём с включения этой опции. Общие настройки веб-сервера Apache размещены в файле

vim /etc/httpd/conf/httpd.conf
# ИЛИ
vim /etc/apache2/apache2.conf

Но обратите внимание, что если у вас несколько виртуальных хостов, то у каждого хоста может быть свой собственный файл .conf и редактировать нужно именно его.

Прежде всего, интересует Options FollowSymLinks. Если она установлена так:


<Directory "/srv/http">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Значит сервер может переходит по символьным ссылкам.

Если проблема с CGI скриптами, то обратитесь к секции:

<Directory "/srv/http/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

В вышеприведённом примере, серверу запрещено следовать по символьным ссылкам для директории cgi-bin. Чтобы это исправить, нужно отредактировать этот участок следующим образом:

<Directory "/srv/http/cgi-bin">
    AllowOverride None
    Options FollowSymLinks
    Require all granted
</Directory>

Чтобы внесённые изменения вступили в силу, нужно перезапустить веб-сервер.

Если после перезапуска изменение этой директивы не помогло, то причин может быть две:

  • вы отредактировали не тот файл (либо импортируется другой .conf хоста, который перезаписывает настройки)
  • Apache не имеет разрешения на доступ к директории, файлам, на которые указывают символьные ссылки.

Во втором случае нужно присвоить соответствующие права требуемой директории или поменять её владельца:

chmod 755 директория,-куда-ведёт-символьная-ссылка

Рекомендуемые статьи:

1 Комментарий

  1. Алексей

    большое спасибо, за разжеваный ответ))

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *