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

Я добавил следующий код в файл 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» является решением проблемы.

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

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

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

После совместного поиска проблемы с @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 для других возможных решений.

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

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

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

Я решил эту проблему, изменив владельца с root
на apache
, как показано ниже.
chown -R apache:apache /var/www/html/mydomain
Затем я изменил разрешения для wp-content/uploads/
на 775
.
После этого я попытался загрузить изображение в медиабиблиотеку. Мне удалось успешно загрузить изображение.

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

Я сталкивался с этой проблемой много раз и решал её увеличением memory_limit = 256M
в php.ini ИЛИ добавлением define( 'WP_MEMORY_LIMIT', '256M' );
в файл wp-config.php
(*При необходимости можно увеличить память больше чем 256M
) в большинстве случаев.
Ещё одно возможное решение — выдача прав папке \wp-content\uploads\
; команда: chmod -R 0755 wp-content\uploads\
.
Надеюсь, это поможет и вам.
