Esta resposta é um pouco longa, mas acho que o contexto é importante aqui, então, por favor, tenha paciência comigo.
Razão para o problema
Quando você está usando um symlink, o que você está dizendo é essencialmente "ao invés de procurar aqui (/ var / www / test), você deve olhar para aquele diretório (/ home / anotheruser / test)". Para que isso funcione ao servir arquivos da web, você precisa de duas coisas:
- o usuário que o apache executa deve ter permissão para ler esse diretório - essa parte já está correta com a ajuda dos outros
O - apache deve ser configurado para permitir que ele veicule arquivos desse diretório - e essa é a parte que está faltando.
Para dar um exemplo: o arquivo / etc / passwd é legível para todos. Ainda assim, você provavelmente não o deseja legível para o mundo inteiro - portanto, mesmo que você fizesse um link simbólico ( ln -s /etc/passwd /var/www/test/passwd
), ele ainda não seria legível a menos que você informe especificamente ao apache que ele é permitido em / etc .
Como corrigir isso
Você precisa mover os arquivos para um diretório do qual o apache é permitido para as páginas do servidor, ou você precisa permitir que o apache atenda páginas do diretório onde os arquivos moram.
Solução 1 - mover arquivos
A solução mais rápida é ligar o symlink - crie o diretório /var/www/test
, torne o outro usuário o proprietário e faça ln -s /var/www/test /home/anotheruser/
. Dessa forma, todos os arquivos são armazenados em /var/www
, portanto, o apache tem permissão para atendê-los.
Solução 2 - permitir diretório
Adicione uma diretiva ao httpd.conf para permitir que o apache exiba o conteúdo de /home/anotheruser/test
. Em seguida, basta remover o link simbólico e configurar um alias. Assim:
Alias /test /home/anotheruser/test
<Directory /home/anotheruser/test>
Order allow,deny
Allow from all
</Directory>