Estoy tratando de configurar un servidor Apache 2 en mi máquina Arch Linux. Todo funciona muy bien hasta ahora, incluidos https y php, pero ahora quiero cambiar DocumentRootel valor predeterminado /srv/httpa /var/www/foo. He cambiado DocumentRoot /srv/httpy <Directory "/srv/http">a DocumentRoot /var/www/fooy <Directory "/var/www/foo">, respectivamente, y vuelve a cargar la configuración utilizando systemctl restart httpd. Ahora recibo 403 errores al intentar acceder https://localhosto cualquier cosa dentro.
Una investigación adicional resulta que cambiar la <Directory ...>declaración tiene un efecto, pero cambiar la DocumentRootno. Cuando me puse Require all granteden <Directory />eliminar estos errores 403, resulta que Apache todavía está tratando de servir a los documentos de /srv/http. Por ejemplo, pongo un archivo que contiene prueba.php <?php echo exec('pwd'); ?>en tanto /srv/http/y /var/www/foo/y el acceso a https://localhost/test.phplas salidas /srv/httpde mi navegador. Intentar acceder a los documentos ubicados en, /var/www/foopero no en, /srv/httpdará como resultado errores 404.
¿Por qué sigue usando Apache /srv/http? He cambiado absolutamente cada ocurrencia de /srv/httpque /var/www/fooen /etc/httpd/conf/httpd.confy reiniciar Apache varias veces, pero mi raíz del documento simplemente no va a cambiar. Según el artículo de Apache Arch Wiki, he hecho todo lo necesario.
Por supuesto, podría simplemente hacer un enlace simbólico /srv/httpa la ubicación deseada, pero esa no parece ser la forma correcta de hacerlo.
Aquí están las partes de mi httpd.configque creo que podrían 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>
Por supuesto, /var/www/foosí y todos los directorios principales tienen al menos 755permisos.
fuente

/srv/httpizquierda.Include conf/extra/httpd-vhosts.conf, vea Cómo configurar los hosts virtuales de Apache en Arch Linux , para que pueda verificar si esa línea existe y si existe o no está comentado enhttpd.conf. Si no está comentado, puede poner un#al principio de la línea para que sea un comentario y reiniciar Apache para ver si eso hace la diferencia.apachectl -S. Eso también muestra el valor predeterminado paraDocumentRoot, pero el valor que veDocumentRootallí no es necesariamente el que se usalocalhostsi unaVirtualHostsección está vigente dentrohttpd.confo desde unhttpd-vhosts.confarchivo externo .vhosts.confno estaba incluido. Pero investigando más en esa dirección, descubrí quehttpd-ssl.confcontenía una configuración de host virtual que usa explícitamente/srv/http. También cambié eso/var/www/foo, ¡y ahora todo funciona! ¡Gracias!