A solução tinha a ver com o contexto do SELINUX. Mudou o contexto via chcon. Agora funciona. link
Estou incluindo algumas imagens em um site, digitalizando um monte de pastas na minha máquina local para imagens via PHP e gerando automaticamente o código HTML necessário ( <img...>
). Mas o navegador não mostra as imagens, em vez disso - seguindo o link para a imagem - "Proibido: você não tem permissão para acessar ...".
As permissões são definidas para 755 (pastas) e 644 (arquivos). Quando eu abro as imagens no Gimp e as salvo como novos arquivos, o navegador irá mostrá-las, mesmo que eu não tenha mudado nada; apenas abrindo e salvando. O problema é que tenho centenas de fotos e não quero continuar abrindo cada foto individualmente. O novo arquivo e o arquivo original têm as mesmas permissões. Veja a prova: O arquivo com o sublinhado no final funciona (Baummarder Mai 14_.JPG). O resto não.
Para ser claro: tenho imagens funcionais e não funcionais na mesma pasta. Os que eu salvei como novos arquivos com o Gimp são mostrados enquanto os originais (na mesma pasta) mostram a imagem padrão de "acesso negado".
Error_log diz:
(13)Permission denied: [client 127.0.0.1:38192] AH00035: access to /auwaldstation/quiz/Wildkamera/Bilder/Wildschwein/SchweinCdy00008.JPG denied (filesystem path '/var/www/html/auwaldstation/quiz/Wildkamera/Bilder/Wildschwein/SchweinCdy00008.JPG') because search permissions are missing on a component of the path, referer: http://localhost/auwaldstation/quiz/wildkamera_bilder.php
Mesmo que o caminho de arquivo complete esteja definido como 755.
(Não se preocupe que é um arquivo diferente em uma subpasta diferente - permissões e forma de incluí-lo na página é o mesmo)
Estou muito curioso sobre qual pode ser o problema. Poderia ser devido a metadados? Eu verifiquei aqueles, mas não consegui encontrar nada óbvio. É possível que esses arquivos estejam de alguma forma danificados ou possuam metadados / cabeçalho errados ou qualquer coisa que possa evocar tal comportamento? É um bug / recurso estranho de manipulação de permissões, ou seja, arquivos que eu não criei não são de minha propriedade?
Existe alguma maneira de resolver esse problema? É possível mostrar essas imagens mesmo usando alguma magia PHP?
UPDATE : Acabei de descobrir que o seguinte código PHP não reconhece as imagens originais como imagens. Os recém-criados reconhecem como imagens.
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
Btw: as fotos são tiradas por uma câmera de trilha. Não há conflito de direitos autorais envolvido.
Usando: Fedora 23, Apache 2.4.23, PHP, HTML / CSS
A solução tinha a ver com o contexto do SELINUX. Mudou o contexto via chcon. Agora funciona. link