Сервер не может обработать изображение в WordPress
Добрый день! Уважаемые читатели IT блога Pyatilistnik. В прошлый раз мы с вами разобрали полезный механизм отслеживания членства в локальной группе безопасности с последующим уведомлением по электронной почте. Сегодня я отвлекусь от безопасности Windows и поговорю про свой любимый движок WordPress, на котором при переходе на свежий софт я начал ловить вот такую интересную ошибку при попытке вставить картинку в статью, звучит она вот так "Сервер не может обработать изображение, возможно он перегружен или недостаточно ресурсов для завершения задачи". Давайте разбираться в причинах и как все можно легко починить.
Описание проблемы с загрузкой картинок
На сайте постоянно идут оптимизации, для улучшения производительности и удобства предоставления контента, в связи с чем я перевел блог на WordPress 6.6.2 и PHP 8.1, в планах перейти на версию 8.3. После этих манипуляций у меня появилась очень надоедливая проблема, я начинаю заливать в библиотеку картинок новое изображение, ввожу всякие метаданные и при попытке его вставить в запись у меня появляется вот такая ошибка:
Сервер не может обработать изображение, возможно он перегружен или недостаточно ресурсов для завершения задачи. Возможно поможет загрузка меньшего размера изображения. Рекомендуемый максимальный размер - 2560 пикселов.
Чтобы ее обойти я вручную сохраняю запись, после чего делаю повторную вставку загруженной картинке, где она уже присутствует в библиотеке, но если я заливаю новую, она так же начинает ругаться с ошибкой выше и приходится делать новый цикл. Сами понимаете это отнимает много времени и заставляет делать ненужные действия.
Возможные причины и методы устранения
Сразу отмечу, что причин тут много, я рассмотрю подробно только рабочие, про вероятные опишу в целом.
- 1️⃣Первое, что вы должны сделать это проверить свои настройки PHP. Как я писал ранее я, обновился с версии 7.3 до 8.1, и мне необходимо было проверить параметр memory_limit. Параметр memory_limit в PHP определяет максимальное количество памяти, которое может использовать скрипт PHP во время выполнения. Этот лимит помогает предотвратить чрезмерное потребление ресурсов сервера и возможные сбои, связанные с исчерпанием доступной памяти.
Параметр можно установить в файле конфигурации php.ini, а также в .htaccess, скрипте PHP с помощью функции ini_set(), или в настройках веб-сервера. Я пошел это проверять в веб-интерфейсе своего хостинга. В моем случае стояло 256 МБ, чтобы было с избытком. Значение по умолчанию может варьироваться в зависимости от версии PHP и конфигурации сервера. Обычно оно составляет от 128M до 256M.
Так же проверьте параметры upload_max_filesize и post_max_size, чтобы они были больше ваших картинок, которые вы загружаете.
- 2️⃣Если у вас тут достаточно памяти, то я вам рекомендую прописать вот такую функцию в файле functions.php или если вы, как и я используете плагин Profunctions, то в фале profunctions.php. Преимущество Profunctions в том, что не важно какая у вас тема, все настройки в плагине будут применятся к ним, а вот в случае functions.php не так.
Подключитесь через удобный для вас метод к вашему серверу/хостингу, в моем случае я использую программу FileZilla, и в нужный файл внесите вот такой код.
// Определяем функцию hs_image_editor_default_to_gd, которая принимает массив $editors.
function hs_image_editor_default_to_gd( $editors ) {
// Создаем переменную $gd_editor и присваиваем ей значение класса WP_Image_Editor_GD.
$gd_editor = 'WP_Image_Editor_GD';// Удаляем $gd_editor из массива $editors, если он там есть, с помощью функции array_diff.
$editors = array_diff( $editors, array( $gd_editor ) );// Добавляем $gd_editor в начало массива $editors с помощью функции array_unshift.
array_unshift( $editors, $gd_editor );// Возвращаем измененный массив $editors.
return $editors;
}// Добавляем фильтр wp_image_editors, который вызывает нашу функцию hs_image_editor_default_to_gd.
add_filter( 'wp_image_editors', 'hs_image_editor_default_to_gd' );
В результате использования данной функции я полностью исправил ошибку "Сервер не может обработать изображение, возможно он перегружен или недостаточно ресурсов для завершения задачи. Возможно поможет загрузка меньшего размера изображения. Рекомендуемый максимальный размер - 2560 пикселов".
- 3️⃣Плагины и темы: Некоторые плагины или темы могут конфликтовать с загрузкой изображений. Попробуйте временно отключить плагины и переключиться на стандартную тему (например, Twenty Twenty-One), чтобы проверить, сохраняется ли ошибка.
- 4️⃣Кэширование: Если у вас есть плагины кэширования, попробуйте очистить кэш или временно отключить их.
- 5️⃣Ошибка в коде: Если вы вносили изменения в файлы темы или плагинов, убедитесь, что нет ошибок в коде.
- 6️⃣Логи сервера: Проверьте логи ошибок вашего сервера (обычно они находятся в папке с логами на вашем хостинге). Это может дать дополнительную информацию о проблеме
На этом у меня все, если у вас остались вопросы. то жду их в комментариях. С вами был Иван Сёмин, автор и создатель IT проекта Pyatilistnik.org.