Я включаю некоторые картинки в веб-сайт, сканируя кучу папок на моем локальном компьютере для изображений через PHP и автоматически генерируя необходимый HTML-код (<img...>
). Но браузер не показывает фотографии, вместо этого - по ссылке на изображение - «Запрещено: у вас нет прав доступа ...».
Разрешения установлены на 755 (папки) и 644 (файлы). Когда я открываю изображения в Gimp и сохраняю их как новые файлы, браузер показывает их, хотя я ничего не менял; просто открытие и сохранение. Дело в том, что у меня есть сотни картинок, и я не хочу открывать каждую картинку по отдельности. Новый файл и исходный файл имеют одинаковые разрешения. Вот доказательство:файл с подчеркиванием в конце работает (Baummarder Mai 14_.JPG). Остального нет.
Чтобы было понятно: у меня есть рабочие и нерабочие картинки в одной папке. Те, что я сохранил как новые файлы в Gimp, отображаются, а исходные (в той же папке) показывают изображение по умолчанию "отказано в доступе".
Error_log говорит:
(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
Даже если полный путь к файлу не установлен на 755.
(Не обращайте внимания на то, что это другой файл в другой подпапке - права доступа и способ включения его на страницу одинаковы)
Мне очень любопытно, в чем может быть проблема. Может ли это быть из-за метаданных? Я проверил это, но не смог найти ничего очевидного. Возможно ли, что эти файлы каким-то образом повреждены или имеют неправильные метаданные / заголовок или что-то, что может вызвать такое поведение? Это странная ошибка / особенность обработки прав доступа, то есть файлы, которые я не создал, которые я не имею?
Есть ли способ решить эту проблему? Можно ли показать эти картинки в любом случае, используя магию PHP?
ОБНОВЛЕНИЕ: Я только что узнал, что следующий PHP-код вообще не распознает оригинальные картинки как изображения. Недавно созданные они распознают как изображения все же.
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;
}
Кстати: фотографии сделаны с камеры. Там нет конфликта авторских прав.
Использование: Fedora 23, Apache 2.4.23, PHP, HTML/CSS