У меня есть веб-сервер Apache, в котором есть подпапка для изображений. По какой-то причине некоторые файлы .png возвращаются как text/html, а не как image/png.
Нет ничего, что указывало бы на проблему с правами доступа, и файлы возвращаются с кодом 200 и полным размером. Я убедился, что установлено image/png, и даже попытался принудительно включить его с помощью .htaccess
Есть идеи, где искать дальше?
Редактировать: похоже на проблему с конфигурацией .htaccess в родительском каталоге.
решение1
Вы убедились, что файлы png являются допустимыми файлами изображений? Если вы работаете на платформе Linux, вы можете попробовать команду file
file somefile.png
Эта команда должна вернуть что-то вроде
PNG image data, 318 x 15, 8-bit/color RGB, non-interlaced
Вы также можете попробовать просмотреть файл с помощью программы просмотра изображений.
решение2
Для меня проблема заключалась в том, что файл изображения, который нужно было доставить, назывался pear.php.net-sos8j3lis2j.png
.
AddHandler
Директива Apache- используется для назначения интерпретатора PHP файлам .php - поддерживаетнесколько расширений, и pear.php.net.png
рассматривался как имеющий три расширения: .php
, .net
и .png
. .php
был первым, для вызова интерпретатора PHP.
text/html
затем был отправлен либо Apache, либо PHP, я не знаю.
Что мне пришлось сделать, чтобы решить проблему:
Заменить все экземпляры
AddHandler php-cgi .php
с
<FilesMatch \.php$>
SetHandler php-cgi
</FilesMatch>
решение3
Возможно, вам следует поискать .png, .PNG, .pNG и .PNg.