Estou tentando configurar um servidor Apache 2 em minha máquina Arch Linux. Tudo funciona muito bem até agora, incluindo https e php, mas agora quero alterar o DocumentRoot
do padrão /srv/http
para /var/www/foo
. Alterei DocumentRoot /srv/http
e <Directory "/srv/http">
para DocumentRoot /var/www/foo
e <Directory "/var/www/foo">
respectivamente e recarreguei a configuração usando systemctl restart httpd
. Agora estou recebendo erros 403 ao tentar acessar https://localhost
ou qualquer coisa dentro.
Outras investigações mostram que alterar a declaração <Directory ...>
tem um efeito, mas alterar o DocumentRoot
não. Quando eu defino Require all granted
em <Directory />
para eliminar esses erros 403, acontece que o Apache ainda está tentando servir documentos de /srv/http
. Por exemplo, eu coloquei um arquivo test.php contendo <?php echo exec('pwd'); ?>
em /srv/http/
e /var/www/foo/
e acessando https://localhost/test.php
outputs /srv/http
em meu navegador. Tentar acessar documentos localizados em /var/www/foo
, mas não em /srv/http
, resultará em erros 404.
Por que o Apache ainda está usando /srv/http
? Eu mudei absolutamente todas as ocorrências de /srv/http
para /var/www/foo
em /etc/httpd/conf/httpd.conf
e reiniciei o Apache várias vezes, mas a raiz do meu documento simplesmente não muda. De acordo com o artigo do Apache Arch Wiki, eu fiz tudo que é necessário.
Eu poderia, claro, apenas ligar simbolicamente /srv/http
ao local desejado, mas isso não parece ser o caminho correto.
Aqui estão as partes do meu httpd.config
que eu acho que podem ser relevantes:
<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>
É claro que /var/www/foo
e todos os diretórios pai têm pelo menos 755
de permissões.