Eu tenho uma nova instalação do CentOS 6, que possui um link simbólico na raiz do documento para meus arquivos de desenvolvimento:
[root@localhost html]# ls -l
total 4
-rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
Meu httpd.conf tem isso:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
O destino do link simbólico tem permissões que devem permitir que o apache leia o que quiser:
[root@localhost billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
Eu também tentei desativar o SELinux alterando /etc/selinux/conf
:
SELINUX=disabled
No entanto, não importa o que eu faça, quando alguém tenta acessar esse link, http://localhost/refresh-app/
recebo uma página de erro 403 FORBIDDEN e isso está escrito em /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
Por que o Apache não pode acessar o destino do link simbólico?
centos
permissions
apache-httpd
Billy ONeal
fonte
fonte
Respostas:
Encontrei o problema. Acontece que, Apache quer acesso a não apenas o diretório estou servindo,
/home/billy/refresh-app/
mas também todos os diretórios acima disso, ou seja/home/billy/
,/home
, e/
. (Não sei por que ... conceder acesso a um subdiretório a alguém não deve exigir permissões para tudo acima desse subdiretório ...)Eu acho que ele está procurando
.htaccess
ou algo assim, ou talvez * nix seja estranho sobre como trata as permissões para o diretório transversal.fonte
/
... quase sempre) Os sistemas com ACLs geralmente têm uma opção transversal de diretório separada. Você pensaria que, após 30 anos desde que o Unix foi projetado, e com ampla disponibilidade de sistemas ACL, essas ACLs seriam o padrão. : suspiro:Eu tive um problema semelhante em que eu tinha a seguinte configuração que costumava funcionar com o Ubuntu 10, mas parou de funcionar com o Ubuntu 14 (Apache 2.4):
Mudar para isso resolveu o problema (mesmo que o usuário do servidor da Web não tenha conseguido acessar diretamente o link simbólico)
Pelo que sei, é apenas a
-SymLinksIfOwnerMatch
configuração e tem algo a ver com as alterações no Apache 2.4, mas não tentei pesquisar a causa exata.Eu também pensei que poderia ser devido a
openbase_dir
restrições no PHP, mas não era isso.fonte
Este erro também pode ser causado se você estiver vinculando a uma pasta criptografada.
fonte
Parece que "FollowSymLinks" é a opção que você precisa no httpd.conf. É detalhado aqui . Parece que você também pode precisar de uma regra nos htdocs ... mas é a opção que você precisa.
fonte
Options All
-FollowSymLinks
já está especificado.Você também pode verificar se o selinux é aplicado ou não. No RedHat / Fedora, execute o seguinte:
Se a resposta for 'Executando', convém executar
e tente o URL novamente no seu navegador.
Observe que não estou dizendo que desabilitar o selinux é a melhor maneira de resolver esse problema, mas pode ajudar a identificar a causa.
fonte
Criar um arquivo .htaccess com isso fez o truque para mim (coloque-o em um diretório antes do link simbólico).
fonte
/var/www
um link simbólico para outro link simbólico intermediário. Se você precisar usar links simbólicos, faça dele um link simbólico DIRETAMENTE para o seu destino.que o que resolve meu problema depois de permitir toda a permissão e permitir o followymlink "No caso do FollowSymLinks especificamente, DEVE estar dentro de uma estrutura de diretórios quando estiver dentro de um arquivo .conf. No manual atual do Apache
responda daqui
fonte
Minha solução foi criar uma pasta compartilhada para todos os repositórios nomeados
/home/repo
.Em seguida, faça o link simbólico da minha própria casa como:
ln -s /home/repo ~/Code
so~/Code/www.xxxx.com/public
aponta para/home/repo/www.xxxx.com/public
e também um link para os
/var/www/html
pontos raiz da web do apache para/home/repo/www.xxxx.com/public
Encontre-o aqui: https://github.com/alghanmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide
Com algumas acrobacias de symlink + groups, você pode ter vários usuários / versões implantados.
fonte
@Billey ONeil @Flion Eu não conseguia responder na linha (baixa contagem de repetições)
Aqui estava o que eu tinha que fazer:
( nota: aliás ll = 'ls $ LS_OPTIONS -lh')
Agora observe todos os diretórios no link de origem
O diretório / home / DATA é o culpado.
Corrija com isso:
A correção é imediata - não há necessidade de reiniciar o apache.
fonte
Você também pode ajustar as configurações do SELinux e o setenforce pode não estar no seu caminho. Então tente o seguinte:
e fazer com que isso persista entre as reinicializações
fonte