Довольно распространенная проблема, с которой я часто сталкиваюсь в сообществе WordPress, заключается в том, что крупные изображения, темы и плагины не загружаются в WP. Появляется ошибка: «превышен максимальный размер загружаемых файлов для этого сайта». Сегодня я покажу вам, как вы можете увеличить лимит загрузок в WordPress.
Суть проблемы
Почему вообще это происходит? Важно понять, что обычно это не связано с самой системой WordPress. В большинстве случаев максимальный размер загружаемых файлов задается на уровне сервера, откуда также следует, что вы не сможете справиться с этой проблемой из WP.
Этот лимит задается с целью безопасности и максимальной эффективности. Пользователи не смогут «завалить» ваш сайт крупными видеофайлами, что привело бы к снижению производительности сервера. Я думаю, что это – вполне оправданная мера, однако стандартный лимит в 2 Мб (который стоит на многих серверах) слишком сильно ограничивает нас, поэтому давайте посмотрим, как мы можем поднять его.
Увеличиваем максимальный размер загрузок
Есть три основных способа, которые помогут вам справиться с этой проблемой. Я начну с двух самых простых, после чего уже перейду к ручному изменению настроек сервера – для этого также имеется масса вариантов.
Увеличиваем максимальный лимит загрузок в мультисайтовой сборке
Если у вас установлены мультисайты, вы можете управлять лимитом загружаемых файлов в разделе Settings->Network Settings. Обратите внимание, что этот параметр не сможет переопределить настройки сервера. Если на сервере установлен лимит в 5 Мб, а вы установите в админке 10 Мб, ограничение все равно останется 5 Мб.
Если же на сервере задан лимит в 20 Мб, а ваши параметры сети заданы в 1,500 Кб, вы сможете решить этот вопрос, увеличив лимит до 20,000 Кб.
Обращаемся к своей хостинг-компании
Многие хостинг-компании предлагают поддержку, которая может выручить вас в некоторых ситуациях. Увеличение лимита загрузок – тривиальная задача для любого человека из технической поддержки, он сможет это сделать в течение пары минут.
Изменяем настройки сервера
Есть масса параметров сервера, которые влияют на то, как будут обрабатываться загружаемые файлы. К сожалению, во многих руководствах это понимается превратно – в них меняется много всего лишнего. Согласно документации PHP, важную роль в этом вопросе играют три директивы:
- post_max_size
- upload_max_filesize
- memory_limit
Документация также дает нам довольно четкие инструкции по поводу того, как они должны быть настроены:
post_max_size задает максимальный размер разрешенных данных для записей. Этот параметр также влияет на загрузку файлов. Чтобы загружать крупные файлы, это значение должно превышать upload_max_filesize. Если ограничение памяти доступно в вашем конфигурационном скрипте, memory_limit также может повлиять на загрузку файлов. В общем, memory_limit должен превышать post_max_size.
Нам нужно будет установить все эти три параметра, чтобы разрешить загрузку наших размеров файлов. Если самый крупный файл будет иметь размер 10 Мб, то в таком случае я рекомендую установить upload_max_filesize в 12M, post_max_size в 13M, а memory_limit в 15M. Загрузки могут содержать некоторую текстовую информацию наряду с самим файлом, поэтому всегда лучше оставлять некоторое дополнительное пространство для маневров.
Теперь, когда мы знаем, что именно нужно изменить, нам надо узнать, как это сделать. Вы можете попробовать три варианта. Некоторые могут не работать у вас, что зависит от настроек вашего сервера.
Создайте или измените php.ini
По умолчанию php.ini файлы содержат настройки вашего сервера. Вследствие некоторых серверных ограничений файлы php.ini могут быть недоступны, и поэтому обычно используется метод с .htaccess, о котором мы скажем далее.
Перейдите к корневому каталогу вашего сайта и откройте или создайте файл php.ini. Если этот файл уже имеется, отыщите три параметра и отредактируйте их при необходимости. Если вы только что создали файл, либо параметры не найдены, вы можете вставить в него код ниже:
upload_max_filesize = 12M post_max_size = 13M memory_limit = 15M
Создайте или отредактируйте .htaccess
Файл .htaccess – специальный скрытый файл, который содержит в себе разные параметры, используемые для изменения поведения сервера. Если метод с php.ini не сработал, я рекомендую вам попробовать метод с .htaccess.
С помощью FTP или SSH-соединения перейдите в свой корневой каталог и посмотрите, есть ли в нем файл .htaccess. Если он есть, вы можете отредактировать этот файл вручную, добавив необходимый код для увеличения лимита загрузок.
php_value upload_max_filesize 12M php_value post_max_size 13M php_value memory_limit 15M
Используем PHP-функцию ini_set()
Я – не любитель такого подхода, однако, если все остальное не дало результата, вы можете попробовать этот метод. Добавьте следующий код в свой файл wp-config.php:
@ini_set( 'upload_max_size' , '12M' ); @ini_set( 'post_max_size', '13M'); @ini_set( 'memory_limit', '15M' );
В теории вы можете попробовать добавить этот код в functions.php вашей темы либо в основной файл ваших плагинов, однако обычно этот код там не содержится.
Настройка Nginx
Nginx – альтернатива старому доброму Apache. Он может работать в разы быстрее, чем Apache, и именно по этой причине многие узкоспециализированные хостинги используют его на своих серверах для представления страниц. Если вы запустите свой сайт на Nginx, вам нужно будет также изменить свой файл php.ini и конфиг nginx.
Мы уже говорили о том, как настроить php.ini, поэтому сейчас мы приведем код для конфига nginx:
http { client_max_body_size 13m; }
В группе http может иметься много разных параметров, однако мы меняем только client_max_body_size.
Наконец, что не менее важно, вам нужно будет перезапустить некоторые сервисы, чтобы убедиться в том, что изменения были применены. Выполните следующие команды:
service php5-fpm restart service nginx reload
Заключение
Проверить, работают ли методы, можно очень просто. Мне нравится такой способ: достаточно перейти к разделу Media и щелкнуть по ссылке Add New. Вы должны увидеть небольшое сообщение, которое гласит: «Maximum upload file size: 8Mb» («Максимальный размер загрузок: 8Мб). Числовое значение должно измениться, как только вы укажете новые параметры.
Я рекомендую вам отменять все изменения, которые не сработали. Файлы .htaccess и php.ini работают наподобие каскадированию в CSS. Значение post_max_size, заданное в дочерней категории, перезапишет ту же самую директиву, стоящую в родительской категории.
Это может привести к некоторым проблемам, если вы зададите эти директивы везде, где только можно.
Источник: kinsta.com
Тема знакомая, но повторенье — мать ученья! Спасибо
Да, возможно, кому-то пригодится. И повторить тоже полезно)
Благодарю за статью, очень пригодилось.
Огромное спасибо!
Как всё просто ) спасибо
Спасибо большое! Вы мне так помогли!