Eu tenho um servidor web Apache que possui uma subpasta para imagens. Por algum motivo, alguns dos arquivos .png são retornados como texto/html e não como imagem/png.
Não há nada indicando problema de permissão e os arquivos retornam com código 200 e em tamanho real. Eu me certifiquei de que image/png estava definido e até tentei forçá-lo com .htaccess
Alguma ideia de onde procurar a seguir?
Editar: parece um problema de configuração .htaccess em um diretório pai.
Responder1
Você certificou-se de que os arquivos png são arquivos de imagem válidos? Se você estiver em uma plataforma Linux, você pode tentar o comando file
file somefile.png
Esse comando deve retornar algo parecido com
PNG image data, 318 x 15, 8-bit/color RGB, non-interlaced
Você também pode tentar visualizar o arquivo com um visualizador de imagens.
Responder2
O problema para mim foi que o arquivo de imagem a ser entregue se chamava pear.php.net-sos8j3lis2j.png
.
AddHandler
Diretiva do Apache- usado para atribuir o interpretador PHP a arquivos .php - suportamúltiplas extensões, e pear.php.net.png
foi visto como tendo três extensões .php
: .net
e .png
. .php
foi o primeiro, para que o interpretador php fosse invocado.
text/html
foi então enviado pelo Apache ou PHP, não sei.
O que eu tive que fazer para resolver o problema:
Substitua todas as instâncias de
AddHandler php-cgi .php
com
<FilesMatch \.php$>
SetHandler php-cgi
</FilesMatch>
Responder3
Talvez procure por .png, .PNG, .pNG e .PNg.