Как исправить HTTP-ошибку при загрузке изображений?

26 июл. 2012 г., 20:05:54
Просмотры: 207K
Голосов: 30

Я использую WordPress 3.4.1 на Ubuntu 12.04 с Apache и PHP 5.3.X

Когда я захожу в панель управления и добавляю новый пост, а затем пытаюсь загрузить изображение для установки как избранное, я получаю красное окно с сообщением "HTTP Error".

Я читал, что люди советуют не использовать Flash-загрузчик, а использовать загрузчик браузера, но когда я пробую это, я просто получаю ошибку 500 Internal Server Error.

Я пробовал добавить AddType x-mapp-php5 .php в начало моего файла .htaccess, но это не принесло никаких изменений.

Отключение ВСЕХ плагинов не дало результата. Я попробовал чистую установку. Безрезультатно.

Обновление 17.10.2016 - Если вы используете пользовательские роли или возможности, попробуйте использовать стандартные роли/возможности и повторите попытку.

Что следует проверить:

  • Владельца файлов
  • Права доступа к файлам
  • Конфигурацию .htaccess
  • Версию PHP 7+
  • Текущую версию WordPress

Если вы работаете через прокси-сервер, убедитесь, что тайм-ауты прокси-сервера настроены правильно.

HTTP-ошибка при загрузке медиафайлов в WordPress 3.4.1

1
Комментарии

Каков смысл использования AddType x-mapp-php5 .php? Это кажется очень специфичным для сервера. Можно предположить, что с большей вероятностью это сломает ваш сайт (то есть PHP) (или, если повезет, не сделает ничего), а не улучшит что-либо?

MrWhite MrWhite
1 янв. 2018 г. 19:29:59
Все ответы на вопрос 6
4
27

Я добавил следующий код в файл functions.php. Он работает!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

Это помогает, потому что изменяет модуль PHP, используемый для обработки загружаемых изображений в WordPress.

Эта обработка включает перемещение изображения в медиатеку WordPress и генерацию изображений разных размеров («thumbnail», «medium», «large»), которые WordPress всегда держит под рукой для использования в темах.

Код заставляет использовать модуль «GD», потому что он указан первым. В некоторых конфигурациях сервера более новая библиотека «Imagick» работает некорректно в определённых сценариях, например при обработке изображений с большими размерами, поэтому принудительное использование библиотеки «GD» является решением проблемы.

30 апр. 2014 г. 08:19:18
Комментарии

Лучше создать небольшой плагин, чем помещать код в functions.php, потому что при смене темы вы потеряете этот код. Уверен, вы хотите, чтобы это работало и после смены темы.

Elías Gómez Elías Gómez
15 янв. 2018 г. 13:43:10

+1 Это сработало для меня, когда я столкнулся с этой проблемой в стандартной установке WP 4.9.4 на новом аккаунте HostGator. @EliasNS я новичок; какой правильный способ создать небольшой плагин для этого?

Andrew Janke Andrew Janke
27 февр. 2018 г. 03:26:23

@AndrewJanke, вы можете использовать плагин https://es.wordpress.org/plugins/pluginception/

Elías Gómez Elías Gómez
27 февр. 2018 г. 13:07:33

"Imagick"? Не "ImageMagick"?

Peter Mortensen Peter Mortensen
8 июн. 2019 г. 16:23:57
3
22

После совместного поиска проблемы с @Wyck в чате мы определили основную причину.

Проблема была связана с конфигурацией сервера, где не было выделено достаточного объема памяти для Apache/PHP.

Если у вас аналогичная проблема, убедитесь, что в настройках сервера выделено достаточно памяти (64 МБ+) для Apache/PHP. Также можно добавить эту строку в файл wp-config.php:

define('WP_MEMORY_LIMIT', '64MB');

Если решение выше не помогает, прочитайте статью Проблемы с загрузкой изображений/медиафайлов? для дальнейшего устранения неполадок.

Попробуйте добавить по одному или все приведенные ниже настройки в файл .htaccess в корневой директории вашей установки WordPress.

Серьезно, пробуйте решения по одному, чтобы точно определить, какое из них сработало. Не вставляйте все сразу в .htaccess.

Попробуйте эту строку:

AddType x-mapp-php5 .php

mod_security может вызывать проблемы. Отключите его, чтобы проверить. Для этого создайте файл .htaccess в директории wp-admin и добавьте туда:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

Если вы используете контроль доступа на основе аутентификации на веб-сервере (часто называемый htpasswd, базовой аутентификацией, защищенной паролем директорией и т.д.), WordPress не сможет обрабатывать его для Flash Uploader, Cron и XMLRPC. Связанные файлы необходимо исключить. Учтите, что это может повлиять на безопасность.

# Исключить скрипты загрузки файлов и WordPress CRON из аутентификации
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
</FilesMatch>

Последнее замечание: некоторые пользователи отмечали, что при использовании версии PHP ниже 5.3.X можно попробовать отключить PHP Safe Mode.

Если вы используете WordPress Multi-Site и получаете HTTP-ошибки или внутренние ошибки сервера при загрузке изображений, прочитайте статью Загрузка изображений в Multi-Site вызывает ошибку HTTP для других возможных решений.

26 июл. 2012 г. 21:47:48
Комментарии

ок... полезно знать... ты читал, что WP пытается выделить до 256MB оперативной памяти, поэтому define('WP_MEMORY_LIMIT', '64MB'); должно быть по возможности больше.

Damien Damien
27 июл. 2012 г. 01:35:17

Если ты используешь WP 4.1.1, то AddType x-mapp-php5 .php больше не является рабочим решением, так как заставляет страницу просто выводить PHP-код как обычный текст

cameronjonesweb cameronjonesweb
27 мар. 2015 г. 08:02:27

Или добавь это в конфигурационный файл сайта, если используешь nginx: client_max_body_size 128m;

Bent Bent
28 июн. 2015 г. 19:00:05
0

Я столкнулся с такой же ошибкой при попытке загрузить медиафайлы в WordPress. В Chrome она отображается как HTTP-ошибка; в Firefox ошибка выглядит совершенно иначе. В интернете полно историй о людях, которые потратили дни на поиск причины этой проблемы (как и я :-( ). Решений предлагается множество, но никто не объясняет, почему это происходит, по крайней мере, не так, чтобы это соответствовало симптомам.

Мой скромный вклад: я заметил, что проблема коррелирует с ошибкой сегментации (segmentation fault), которая появляется в лог-файле Apache2. Это меня беспокоит, потому что такую ошибку сложно диагностировать.

Перезагрузка всего сервера устранила все симптомы, и внезапно я снова смог загружать медиафайлы в WordPress. К сожалению, я так и не понял, в чем причина этой проблемы. Перезагрузка фактически прервала мои дальнейшие исследования, и теперь мне придется ждать (недели? месяцы?), пока проблема не проявится снова. Надеюсь, это поможет другим в поиске причины этой ошибки. Хотя моя жена рада, потому что я больше не могу проводить ночи в попытках решить эту проблему...

30 мая 2014 г. 22:19:02
0

Я решил эту проблему, изменив владельца с root на apache, как показано ниже.

chown -R apache:apache /var/www/html/mydomain

Затем я изменил разрешения для wp-content/uploads/ на 775.

После этого я попытался загрузить изображение в медиабиблиотеку. Мне удалось успешно загрузить изображение.

29 окт. 2013 г. 11:24:01
0

У меня была та же проблема. Я пробовал различные решения, включая смену обработчика изображений по умолчанию с PHP GD на ImageMagick с помощью плагина Force Image Magick Plugin.

Это помогло устранить HTTP Error / ошибку 500, но миниатюры перестали создаваться. Затем я снова отключил плагин, и мне помог этот ответ на вопрос Looks like image resize is not working well. У меня значение PHP_MEMORY_LIMIT было установлено на 160MB, что является абсолютным максимумом, разрешённым моим хостинг-провайдером.

При загрузке изображений это приводило к максимально возможным размерам изображения около 6000 x 6000 пикселей при использовании PHP GD и генерации миниатюр. Поэтому важно проверять не только размер файла, но и разрешение изображения. Загрузка изображения с большими размерами приводила к HTTP Error / ошибке 500, даже если сам файл был небольшим.

29 мар. 2018 г. 19:15:49
0

Я сталкивался с этой проблемой много раз и решал её увеличением memory_limit = 256M в php.ini ИЛИ добавлением define( 'WP_MEMORY_LIMIT', '256M' ); в файл wp-config.php (*При необходимости можно увеличить память больше чем 256M) в большинстве случаев.

Ещё одно возможное решение — выдача прав папке \wp-content\uploads\; команда: chmod -R 0755 wp-content\uploads\.

Надеюсь, это поможет и вам.

7 окт. 2019 г. 08:00:38