Я включаю некоторые картинки в веб-сайт, сканируя кучу папок на моем локальном компьютере для изображений через 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

1 ответ1

2

Решение было связано с контекстом SELINUX. Изменен контекст через chcon. Теперь это работает. http://www.linux-commands-examples.com/chcon

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .