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

28

Я использую WordPress 3.4.1 в Ubuntu 12.04, используя Apache и PHP 5.3.X

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

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

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

Отключение ВСЕХ плагинов не имело никакого эффекта. Я попробовал новую установку. Не повезло.

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

Что нужно проверить:

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

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

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

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

Ответы:

25

Я поместил следующий код в мой 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 всегда хочет, чтобы темы были доступны.

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

Аллен
источник
Лучше создать небольшой плагин, чем поместить его в functions.php, потому что если вы измените тему, вы потеряете код. И я уверен, что вы хотите, чтобы это работало после смены темы 😊
EliasNS
1
+1 Это сработало для меня, когда я решил эту проблему с готовой настройкой WP 4.9.4 для новой учетной записи HostGator. @EliasNS нуб здесь; какой правильный способ сделать небольшой плагин для этого?
Эндрю Янке
@AndrewJanke, вы можете использовать плагин 😅 es.wordpress.org/plugins/pluginception
EliasNS
"Имагик" ? Не "ImageMagick" ?
Питер Мортенсен
21

После устранения неполадок с @Wyck в чате, мы сузились до основной проблемы.

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

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

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

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

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

# Exclude the file upload and WordPress CRON scripts from authentication
<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 и получаете ошибки HTTP или внутренние ошибки сервера, связанные с загрузкой изображений, ознакомьтесь с разделом «Загрузка изображений на несколько сайтов, вызывающих ошибку HTTP» ) , чтобы узнать о других возможных способах устранения неполадок и решениях.

Майкл Эклунд
источник
хорошо ... приятно знать ... вы читали, что WP пытается выделить до 256 МБ оперативной памяти, поэтому это define('WP_MEMORY_LIMIT', '64MB');должно быть больше, если это возможно.
Дэмиен
1
Если вы используете WP 4.1.1, AddType x-mapp-php5 .phpэто больше не является жизнеспособным решением, поскольку заставляет страницу просто печатать код PHP в виде простого текста
cameronjonesweb
1
Или добавьте это в файл конфигурации вашего сайта, если вы используете nginx:client_max_body_size 128m;
Flatron
4

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

Мой достойный вклад: я заметил, что проблема связана с ошибкой сегментации, сообщенной в файле журнала apache2. Это беспокоит меня, потому что это трудно диагностировать.

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

Стеф Йоостен
источник
1

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

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

И тогда я должен изменить разрешение wp-content/uploads/ на 775.

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

Имран
источник
0

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

Это помогло с ошибкой HTTP / 500, но миниатюры больше не генерировались. Затем я снова деактивировал плагин, и что мне помогло, так это ответ на вопрос. Похоже, что изменение размера изображения не работает должным образом . мойPHP_MEMORY_LIMIT был установлен 160MBна абсолютный максимум, который позволяет мой хостер.

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

intagli
источник
0

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

Другим возможным решением может быть предоставление разрешения \wp-content\uploads\папке; команда:chmod -R 0755 wp-content\uploads\ .

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

rony2k6
источник