Максимальный размер файла 20 мб art php. Как увеличить лимиты на размер загружаемых файлов и объем выделяемой для PHP памяти

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

Это может привести к некоторым проблемам, если вы зададите эти директивы везде, где только можно.

Доброго времени суток! Сегодня мы вновь коснемся вопросов переезда с сервера на сервер и тех проблем, которые могут возникнуть в процессе этого.

Речь пойдет о переносе баз данных и о тех особенностях конфигурации серверов, которые могут «всплыть» при работе в phpMyAdmin.

Вводная часть

Начну с лирического отступления. Когда я только начинал свою более-менее профессиональную деятельность в WEB-разработке, мне казалось логичным и единственно верным правило: новый сайт — это всегда новая база данных. Что же здесь непонятного? Все с чистого листа. Зачем тянуть за собой уже существующие таблицы данных? В ответ на это системный администратор, который входил в команду работающую над рядом интернет-проектов, всегда тяжело вздыхал, иногда сильно ругался и рассказывал о префиксах таблиц. В общем, выбить новую базу данных было тяжело. Почти невозможно. Меня это очень даже раздражало, раздражало до степени бешенства.

Не понимал я подхода администратора сервера ровно до того момента пока мне не пришлось столкнуть с переносом двух десятков сайтов с одного сервера на другой. При этом ряд интернет-ресурсов использовали сразу несколько баз данных. В общем, осознал и встал на путь исправления. Подход изменился. Теперь я группирую различные проекты по 3-5 базам данных, что значительно упрощает жизнь. Объем каждой базы данных больше, но количество самих баз — значительно меньше.

Сразу скажу, что значительный объем базы данных может быть вызван всего одним единственным интернет-ресурсом. С такой ситуацией сталкиваюсь часто и обязательно беру ее в расчет. Так в чем же могут возникнуть проблемы с переносом баз данных? Переходим к практической составляющей.

Максимальный размер файла 2048 килобайт

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

PMA как бы намекает... Бекапы более 2 мегабайт — не принимаются

Как вы уже могли догадаться, базу данных можно загнать в архив с расширением.gzip, .bzip2 или.zip, закрыв тем самым вопрос. Однако удается это далеко не всегда. Проще говоря, попытка архивации damp.sql, размеров в 100 МБ не принесет желаемого результата. Но мы попробуем, бегло проверив насколько возможно сжать базу тем или иным архиватором.

Архивация баз данных

Немного экспериментальной части.

В нашем распоряжении бекап с расширением.sql размером ~100 МБ. Что же нам даст архивация?

Результаты были получены в десктопном архиваторе 7zip. Конфигурация стандартная.

Эксперимент завершен. Результаты сжатия замечательны, но недостаточны для решения поставленной задачи.

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

Как снять ограничения

Понимая, что задача не решается на уровне файла, приступим к решению на уровне сервера. Здесь есть как минимум два способа.

Первый, он же классический. Редактирование файла php.ini , как правило, путь к файлу следующий: /etc/php5/apache2 .

Отредактировать данный файл можно как с помощью консоли, так и с помощью ISPmanager, либо любой другой панели управления.

Интересовать нас будут 2 параметра:

  • upload_max_filesize - максимальный размер загружаемого файла
  • post_max_size - максимальный размер сообщения методом POST.

Я установил оба параметра равным 200 МБ. Перезапускаем FPM (FastCGI Process Manager) командой service php5-fpm restart . Кстати, сделать все тоже самое можно через интерфейс ISPmanager:

ISPmanager: настройки PHP

Готово. Размер импортируемого файла увеличен.

Альтернативный подход: импорт файла из папки

Редактируем файл /etc/phpmyadmin/config.inc.php . Нас будет интересовать параметр $cfg["UploadDir"] . Здесь мы должны указать путь к папке, в которой расположены бекапы баз данных. Заглянем в Импорт phpMyAdmin, появился новый пункт:

Важно! Не все йогурты одинаково полезны. Далеко не к каждой директории у phpMyAdmin есть права доступа!
Рекомендую использовать /usr/share/название_папки/ .

Готово. Можно импортировать.

Вот в общем-то и все. Желаю Вам успешных переездов и только надежных серверов. До новых встреч.

Те, кто уже пытался загружать файлы, вполне вероятно, обратили внимание на то, что загрузить файл через PHP даже среднего размера (15-20 МБ ) не представляется возможным. А ведь это не такой уж и большой размер файла, и в этой статье я расскажу, как загружать файлы больших размеров в PHP .

Для того, чтобы загружать файлы больших размеров в PHP , надо исправить настройки интерпритатора PHP . Существуют 4 настройки, влияющие на максимальный допустимый размер загружаемого файла:

  • max_execution_time - максимальное время, которое может выполняться скрипт. Как правило, стоит 30-60 секунд .
  • max_input_time - максимальное время, в течение которого могут приниматься данные на сервер. Здесь также стоит порядка 30-60 секунд .
  • upload_max_filesize - максимальный размер файла, который допускается для загрузки на сервер. Ключевая настройка, однако, вопреки общему заблуждению, далеко не единственная необходимая для загрузки больших файлов в РHP .
  • post_max_size - максимальный размер отправляемых данных.

Фактически, чтобы загружать большие файлы в PHP , нужно исправить все 4 настройки. Делается это с помощью файла .htaccess , в который нужно добавить следующие строки (безусловно, значения можно менять на свои):

Php_value max_execution_time 500
php_value max_input_time 500
php_value upload_max_filesize 30M
php_value post_max_size 30M

Почему все 4 опции так важны:

  • max_execution_time - здесь нужно поставить время, за которое должен успеть загрузиться файл. Очевидно, что файл размеров 30 МБ вряд ли загрузится за 30-60 секунд , поэтому безусловно, это время надо увеличивать.
  • max_input_time - аналогично с max_execution_time . Ведь если первые 60 секунд будут приниматься данные, а потом перестанут, то вновь файл не успеет загрузиться.
  • upload_max_filesize - эту опцию меняют все и без проблем, однако, когда ничего не меняется - удивляются, а ведь она хоть и является ключевой, но, тем не менее, другие три так же очень важны.
  • post_max_size - максимальный размер отправляемых данных так же очевиден, ведь если файл большого размера, то он не сможет полностью отправиться из-за этого ограничения.

Однако, будьте внимательны! До бесконечности увеличивать эти параметры нельзя! Все эти настройки ограничены оперативной памятью, выделяемой Вам сервером. Запомните следующее неравенство, которое всегда должно соблюдаться: "upload_max_filesize < post_max_size < memory_limit ". Вот поэтому нельзя поставить размер файла больше оперативной памяти. Возможно, Вы спросите почему? Здесь всё очень просто: прежде чем файл появится на сервере, он целиком помещается в оперативную память . И поэтому нельзя загрузить файл размера большего, чем оперативная память, выделяемая сервером. Надеюсь, понятно объяснил. А размер оперативной памяти составляет, в среднем, 64 - 128 МБ . И из этого размера Вы можете уже окончательно понять, насколько большие файлы Вы вправе загружать через PHP . Безусловно, если у Вас будет выделенный сервер, то Вы можете поставить хоть 16 ГБ оперативной памяти, если, конечно, на компьютере имеется столько памяти вообще. А на обычным хостинге, таких размеров не бывает, поэтому там всегда есть большие ограничения на размер загружаемых файлов через PHP . И всегда помните: предел на размер загружаемых файлов существует абсолютно всегда и на любом сервере!

Ну, я хотел бы добавить свои 2 цента здесь.

Я использую общий веб-хостинг, и я много раз занимался этой проблемой, пытался решить ее самостоятельно, но безрезультатно. Наконец-то мне удалось решить эту проблему, проверив различные веб-источники и связавшись с моим поставщиком услуг хостинга. Мои вопросы: «Как я могу изменить значение php memory_limit в общедоступном веб-хостинге?», «Как мне изменить значение php upload_max_filesize в общем веб-хостинге?», «Как мне изменить значение php max_input_vars в общем веб-хостинге?»,« Как мне изменить значение php max_execution_time в общедоступном веб-хостинге? »,« Как мне изменить значение php max_input_time в совместном веб-хостинге? »И многое другое, настроив или изменив файл php.ini или.htaccess .Я попытался изменить их, но проблемы. возникла Наконец, я связался со своим хостинг-провайдера, и получается, что я могу установить PHP к родным, они изменили его на PHP 5.6, вот их ответ:

«Ваш PHP был установлен в режим„родной“, который означает, что вы не можете переопределить эти значения. Я изменил вам только «5,6», так что вы должны быть хорошо идти.»

После этого я подключил свой веб-сайт через FTP FileZilla, также не забудьте сделать как ваш сервис передачи файлов, чтобы показать скрытые файлы и локальный компьютер для этого, потому что файл.htaccess был скрыт в моем локальном ноутбуке и на моем веб-сайте. Он был доступен в папке public_html, я только что загрузил его и добавил следующие коды в конец файла, а затем загрузил его обратно на сервер:

Php_value memory_limit 256M php_value post_max_size 256M php_value upload_max_filesize 64M php_value max_input_vars 1800 php_value max_execution_time 300 php_value max_input_time 300

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

Еще одна вещь, о которой я почти забыл упомянуть об установке ZipArchive в вашем общем сервисе веб-хостинга, мне удалось установить это требование, просто перейдя на настройки php через мою cpanel, нажмите на расширения селектора php, а затем отметьте раздел zip, вот и все.

PS: Я открыт для хорошей практики, и если вы видите какую-либо плохую практику, пожалуйста, дайте мне знать, я постараюсь изменить их. Благодарю.

По умолчанию WordPress устанавливает небольшой лимит на размер загружаемых изображений, видеороликов и других файлов. Аналогичная ситуация с PHP memory limit , который сказывается на возможности запускать плагины и скрипты.

Если вы запускаете сайт с большим количеством контента, эти лимиты могут стать проблемой. Можно получить ошибку при загрузке:

Объем загружаемого файла превышает ограничение, заданное директивой upload_max_filesize в файле php.ini

Если достигнут предел выделяемой памяти, то выведется другое сообщение об ошибке:

Неустранимая ошибка: допустимый размер памяти 12345678 байт исчерпан (вы пытались выделить 2345678 байт) в /home/your-username/public_html/wp-includes/plugin.php в строке 1000

Рассмотрим наиболее эффективные способы увеличения этих лимитов на сервере. Начнем с memory limit php ini .

Обновление файла php.ini

Если вы используете CPanel , перейдите в раздел «Файлы » и нажмите кнопку «Диспетчер файлов ». Убедитесь, что установлен флажок «Показать скрытые файлы », а затем нажмите на кнопку «Перейти ».

Выберите папку wp-admin и найдите файл php.ini или php5.ini . Если такого файла нет, создайте его, нажав на кнопку «Создать файл », расположенную в верхнем левом углу. Назовите файл php.ini и нажмите во всплывающем окне кнопку «Создать файл »:

Если ошибка не исчезла, попробуйте переименовать файл в php5.ini . Когда файл будет открыт, добавьте в него приведенные ниже строки, а затем сохраните изменения и закройте файл:

upload_max_filesize = 1000M post_max_size = 2000M memory_limit = 3000M file_uploads = On max_execution_time = 180

M — означает мегабайты. Измените лимиты 1000M, 2000M и 3000M на значения, которые необходимы. Изменение значения max_execution_time ограничит время загрузки скрипта.

Во многих случаях используемые значения должны увеличиваться по мере перехода в списке от первой до третьей строки. Upload_max_filesize должен быть самым маленьким, memory limit php ini — самым большим. При этом post_max_size должен иметь среднее значение.

Прежде чем проверить, не исчезла ли ошибка, очистите кэш браузера.

Редактирование файла.htaccess

Если редактирование php.ini не помогло, попробуйте изменить файл .htaccess . Добавьте приведенный ниже код в конец файла:

php_value upload_max_filesize 1000M php_value post_max_size 2000M php_value memory_limit 3000M php_value max_execution_time 180 php_value max_input_time 180

Измените значения php ini set memory limit так, как вам нужно. Не забудьте сохранить файл и очистить кэш браузера.

Изменение файла wp-config.php

Если оба способа не дали результата, попробуйте отредактировать файл wp-config.php , добавив следующий код в самый низ, перед строкой «happy blogging «:

define(‘WP_MEMORY_LIMIT’, ‘3000M’);

Сохраните файл и очистите кэш браузера.

Изменение лимитов в WHM

Если сайт размещен на VPS или выделенном сервере, можно попробовать изменить лимиты в WHM .

После того, как вы вошли в систему, перейдите в раздел Конфигурация сервера> Настройки > PHP .


Введите нужные вам значения и нажмите кнопку «Сохранить ».

Затем перейдите в раздел Конфигурация служб> Редактор конфигурации PHP . Прокрутите страницу вниз до разделов memory_limit и upload_max_filesize :


Введите необходимые значения. В разделе «Параметры и информация » найдите memory_limit и задайте то же значение, которое вы установили в memory limit php ini и .htaccess .

Заключение

Мы рассмотрели все способы решения данной проблемы. Наслаждайтесь возможностью загружать большие файлы и продолжайте использовать на своем сайте плагины WordPress . Внесенные в php memory limit htaccess изменения должны вступить в силу через несколько минут, после чего можно будет приступить к работе с новыми параметрами.

Если нужно загрузить большие файлы только один раз, попробуйте сделать это через FTP . Обычно файлы, загруженные через FTP в каталог /wp-content/uploads/ , не отображаются в библиотеке медиа. Но с помощью плагина Media from FTP можно отобразить их всего в несколько кликов.

Если ни один из вариантов не дал результата, свяжитесь со своим хостинг-провайдером.

Перевод статьи «How to Increase the Maximum Upload and PHP Memory Limit » дружной командой проекта .

Хорошо Плохо




Top