Я пытаюсь настроить сервер Apache 2 на моей машине с Arch Linux. Пока все отлично работает, включая https и php, но теперь я хочу изменить DocumentRoot со стандартного /srv/http на /var/www/foo . Я изменил DocumentRoot /srv/http и <Directory "/srv/http"> на DocumentRoot /var/www/foo и <Directory "/var/www/foo"> соответственно и перезагрузил конфигурацию с помощью systemctl restart httpd . Теперь я получаю 403 ошибки при попытке доступа к https://localhost или что-то внутри.

Дальнейшее расследование показывает, что изменение объявления <Directory ...> имеет эффект, но изменение DocumentRoot - нет. Когда я установил Require all granted в <Directory /> чтобы устранить эти ошибки 403, оказалось, что Apache все еще пытается обслуживать документы из /srv/http . Например, я поместил файл test.php, содержащий <?php echo exec('pwd'); ?> в /srv/http/ и /var/www/foo/ и доступ к https://localhost/test.php выводит /srv/http в мой браузер. Попытка получить доступ к документам, расположенным в /var/www/foo но не в /srv/http , приведет к 404 ошибкам.

Почему Apache все еще использует /srv/http? Я абсолютно каждый раз менял /srv/http на /var/www/foo в /etc/httpd/conf/httpd.conf и перезапускал Apache несколько раз, но мой корень документа просто не изменился. Согласно статье Apache Arch Wiki, я сделал все, что нужно.

Я мог бы, конечно, просто symlink /srv/http в нужное место, но это не похоже на правильный путь.

Вот части моего httpd.config которые, я думаю, могут быть уместны:

<Directory />
    AllowOverride none
    Require all granted     # Will of course change to denied again once everything works
</Directory>

DocumentRoot "/var/www/foo"

<Directory "/var/www/foo">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Конечно, сам /var/www/foo и все родительские каталоги имеют как минимум 755 разрешений.

1 ответ1

1

Есть ли у вас разделы VirtualHost в httpd.conf? Если у вас есть раздел VirtualHost с параметром /srv/http качестве DocumentRoot , возможно, Apache использует этот каталог из раздела VirtualHost , даже если вы изменили значение DocumentRoot вне раздела VirtualHost .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .