Поддержка Проблемы и решения Изображение не может быть показано

  • «Изображение не может быть показано, так как содержит ошибки»
    Добрый день.
    Использую на сайте код

    if ( preg_match( '~\.(jpe?g|png|gif|svg|bmp)(\?.*)?$~i', $_SERVER['REQUEST_URI']))
    {
      
            $image404 = locate_template('/404.png');
            if (!is_null($image404))
            {
                    $fp = fopen($image404, 'rb');
                    header( 'Content-Type: image/png' );
                    header( 'Content-Length: ' . filesize($image404));
                    fpassthru($fp);
            }
            exit;
    }

    который размещаю в 404.php темы оформления. Он заменяет отсутствующие картинки, на картинку заглушку 404.png
    Ранее пользовался этим кодом много раз — на всех сайтах срабатывало.
    На этом — нет, например, sourgrapes.ie/2012/11/05/wine-label/ вот на этой странице картинка не подменяется.
    Код отрабатывает, но картинка не подменяется,т.к. «Изображение не может быть показано, так как содержит ошибк»
    Во всех браузерах также.
    Проблема в вп или настройках сервера?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • А сама картинка-заглушка нормальная? Прямую ссылочку на нее дайте.

    Зачем слеш в конструкции locate_template('/404.png'); ?

    Адрес картинки заглушки
    sourgrapes.ie/wp-content/themes/sourgrapes/404.png
    Слеш из указанной конструкции убрал — не помогло.

    Я уже и разные другие png картинки пробовал подсовывать с именем 404.png — не помогает

    У картинки, отдаваемой через скрипт, почему-то в начале идет 0A (перевод строки), а потом уже PNG. Не знаю, откуда оно может браться.

    • Ответ изменён 1 месяц, 4 недели назад пользователем Юрий.

    Кстати, перед <!DOCTYPE html> тоже пустая строка.

    Спасибо!
    Действительно, у меня файл 404.php начинался с

    
    
    <?php
    

    Исправил на

    
    <?php
    

    и теперь все работает как надо.

Просмотр 6 ответов — с 1 по 6 (всего 6)