Php увеличивает размер загружаемого файла

Обновлено: 21.11.2024

PHP защищает производительность сервера, ограничивая размер загружаемых файлов, но ограничение по умолчанию слишком мало для многих современных веб-приложений. Вы, вероятно, столкнетесь с этой проблемой, когда приложение PHP отображает сообщение об ошибке с просьбой увеличить максимальный размер загружаемого файла PHP. Существуют различные способы увеличить лимит загрузки, включая непосредственное редактирование файлов конфигурации PHP. В этой статье мы покажем вам, как быстро настроить ограничения загрузки PHP в cPanel и WHM.

Что такое «upload_max_filesize» в PHP?

Директива upload_max_filesize — это переменная PHP, установленная в системе и локальных файлах php.ini и файлах user.ini. Они определяют базовую конфигурацию интерпретатора PHP. Как и следовало ожидать, upload_max_filesize ограничивает максимально допустимый размер загружаемого файла. Значение PHP по умолчанию — 2 мегабайта, и вам придется увеличить его, если вы хотите загружать файлы большего размера через веб-приложение PHP.

Возможно, вам также придется изменить другие директивы, в том числе:

  • post_max_size, который должен быть больше, чем upload_max_filesize.
  • memory_limit, который должен быть больше, чем post_max_size.

Значения директив PHP выражаются в байтах. Если вы установите для upload_max_filesize значение 1000, максимальный размер составит 1000 байт. Однако вы также можете использовать сокращенные значения байтов K, M и G для килобайтов, мегабайтов и гигабайтов. Таким образом, 1000 КБ – это 1 000 килобайт, а 10 ГБ – 10 гигабайт.

Как увеличить максимальный размер загрузки PHP в cPanel?

В cPanel вы можете редактировать директивы PHP для местоположений и доменов, контролируемых вашей учетной записью, с помощью редактора MultiPHP INI, который вы найдете в разделе Программное обеспечение в меню главной страницы. .

Откройте редактор MultiPHP INI и выберите папку в раскрывающемся списке.

Прокрутите до записи для upload_max_filesize и измените связанное значение. Убедитесь, что значение post_max_size больше, чем upload_max_filesize, и нажмите «Применить» внизу страницы.

Как изменить максимальный размер загрузки PHP в WHM?

В то время как cPanel позволяет редактировать директивы PHP в локальных каталогах, в WHM вы можете редактировать директивы в основном файле php.ini сервера. Это влияет на все учетные записи, использующие определенную версию PHP.

Чтобы увеличить лимит загрузки PHP в WHM, откройте MultiPHP INI Editor в разделе Программное обеспечение бокового меню. В раскрывающемся списке выберите версию PHP. Версии PHP имеют независимые конфигурации, поэтому вы должны отредактировать переменную max upload для всех версий, которые хотите изменить.

Прокрутите до upload_max_filesize и измените соседнее значение, прежде чем нажать Применить внизу страницы. Убедитесь, что post_max_size не меньше этого размера.

Чтобы узнать больше о редактировании директив PHP и о том, что делают настраиваемые директивы, ознакомьтесь с документацией по редактору INI MultiPHP для WHM.

Как всегда, если у вас есть какие-либо отзывы или комментарии, сообщите нам об этом. Мы здесь, чтобы помочь наилучшим образом. Вы найдете нас на Discord, форумах cPanel и Reddit. Не забудьте также подписаться на нас в Facebook, Instagram и Twitter.

Вы разработчик PHP или системный администратор, управляющий серверами, на которых размещены приложения PHP? Вы ищете способ увеличить или установить размер загружаемого файла в PHP? Если да, следуйте этой статье, в которой показано, как увеличить размер загружаемого файла в PHP, а также объяснены некоторые основные директивы PHP для обработки загрузки файлов, а также данных POST.

По умолчанию размер загружаемого файла PHP установлен на максимальный размер файла 2 МБ на сервере, но вы можете увеличить или уменьшить максимальный размер загружаемого файла с помощью файла конфигурации PHP ( php.ini ). Этот файл можно найти в разных расположения в разных дистрибутивах Linux.

Чтобы увеличить размер загружаемого файла в PHP, вам необходимо изменить переменные upload_max_filesize и post_max_size в вашем файле php.ini.

Кроме того, вы также можете установить максимальное количество файлов, которые можно загружать одновременно в одном запросе, используя параметр max_file_uploads . Обратите внимание, что начиная с версии PHP 5.3.4 и более поздних версий любые поля загрузки, оставленные пустыми при отправке, не учитываются в этом ограничении.

Переменная post_max_size, которая используется для установки максимального размера данных POST, принимаемых PHP. Установка значения 0 отключает ограничение. Если чтение данных POST отключено через enable_post_data_reading, то оно игнорируется.

После внесения вышеуказанных изменений сохраните измененный файл php.ini и перезапустите веб-сервер, используя следующие команды в соответствующих дистрибутивах Linux.

Вот оно! В этой короткой статье мы объяснили, как увеличить размер загружаемого файла в PHP. Если вы знаете какой-либо другой способ или у вас есть какие-либо вопросы, поделитесь с нами в разделе комментариев ниже.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

У меня есть веб-сайт, размещенный на компьютере, к которому у меня нет доступа. У меня есть форма загрузки, позволяющая людям загружать mp3-файлы размером до 30 МБ. Мой серверный скрипт написан на PHP.

Каждый раз, когда я пытаюсь загрузить файл, я получаю сообщение об ошибке, утверждающее, что файл превышает максимально допустимый размер, поэтому мне нужно увеличить размер. Мои исследования в Интернете предложили изменить файл .htaccess, к которому у меня нет доступа, так что это не сработает. Другие предложили мне добавить собственный файл php.ini в мой корень, но это не сработало. Есть еще предложения?

21 Ответ 21

Вам необходимо установить значения upload_max_filesize и post_max_size в файле php.ini:

Если вы не можете изменить файл php.ini , вам не повезло. Вы не можете изменить эти значения во время выполнения; загрузка файла, превышающего значение, указанное в php.ini, не удастся выполнить к тому времени, когда выполнение достигнет вашего вызова ini_set .

В Linux это обычно находится в /etc/php/ или где-то в этом роде. Если вы используете общий сервер, вам не повезло, если только ваш хостинг-провайдер не предоставит файл php.ini для каждого пользователя.

Если вы используете WAMP под Windows, вы можете отредактировать его, щелкнув значок WAMP > PHP -> php.ini. В Debian мой файл конфигурации находится в /etc/php5/apache2.

Я предлагаю установить более высокий размер для post_max_size . Общий размер опубликованных полей может быть больше, чем размер файла, поэтому, если у вас есть крайний случай, когда кто-то загружает файл размером 40 МБ, это не удастся из-за превышения post_max_size .

Вы можете изменить его с помощью файла .htaccess.

Файлы .htaccess хранятся в том же каталоге, что и ваши файлы .php. Они изменяют конфигурацию этой папки и всех подпапок. Вы просто используете их, создавая файл .htaccess в каталоге по вашему выбору (или изменяя его, если он есть).

Следующее должно позволить вам увеличить лимит загрузки (если провайдер сервера разрешает изменения конфигурации PHP через .htaccess ).

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

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

Это не работает, если эти 2 строки в php.ini были раскомментированы:; Имя для определяемых пользователем файлов php.ini (.htaccess). По умолчанию ".user.ini" ;user_ini.filename = ".user.ini" ; Чтобы отключить эту функцию, установите для этой опции пустое значение ;user_ini.filename =

Стоит отметить, что если вы используете apache CGI или Fast CGI, это вызовет 500 ошибок. Заверните это внутрь

и у меня это отлично сработало!

Вы также можете использовать функцию ini_set (только для версии PHP ниже 5.3):

Как сказал @acme, в php 5.3 и выше эти настройки являются директивами PHP_INI_PERDIR, поэтому их нельзя установить с помощью ini_set. Вместо этого вы можете использовать user.ini.

В последних версиях PHP эти ini-настройки имеют только значение PHP_INI_PERDIR, поэтому вы не можете установить их в своем скрипте. Подробнее см. здесь.

Чтобы найти файл ini, сначала запустите

Затем откройте файл и измените

замените 2M на нужный размер, например 100M.

Он показывает файл как /etc/php5/cli/php.ini, но мой файл конфигурации — /etc/php5/apache2/php.ini. Какое-то заблуждение.

Есть 2 файла php.ini. и с этой командой в ответ он показывает вам, какую из них вы используете! Итак, вам нужно внести изменения, чтобы они вступили в силу!

У меня была такая же проблема в прошлом... и я исправил ее с помощью файла .htaccess

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

Это пример, у меня он работает нормально:

это очень важное замечание, если его не обернуть в ifmodule с указанием вашей версии php, это не сработает!!

Это решение для меня. Просто отлично работает. Если вы используете такой фреймворк, как codeignitor, «.user.ini» должен находиться в том же месте, что и index.php

Спасибо. Это работает для меня. Это идеально подходит для виртуального хостинга, где у вас нет доступа к php.ini. Я бы только добавил, что он доступен с PHP 5.3

ответы немного неполные, нужно сделать 3 вещи

в php.ini вашей установки php (примечание: в зависимости от того, хотите ли вы его для CLI, apache или nginx, найдите нужный php.ini для управления. Для nginx он обычно находится в /etc/php/7.1/ fpm, где 7.1 зависит от вашей версии. Для apache обычно /etc/php/7.1/apache2 )

или установите другие значения. Перезапустите/перезагрузите apache, если у вас установлен apache, или php-fpm для nginx, если вы используете nginx.

Много раз я замечал, что сайт на виртуальном хостинге не позволяет изменять настройки в файлах php.ini. также нельзя даже создать файл .htaaccess. в такой ситуации можно попробовать следующее

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

Я модифицировал, вероятно, четыре других файла php.ini, в том числе тот, который в моей системе называется «Загруженный файл конфигурации» ( php -i | grep -i «загруженный файл конфигурации»), и тот, который находится на странице info.php, но ни один из них не помог. Ключ к обнаружению правильного пути был найден на сайте 2012 года. Они сказали, что путь «/etc/php5/apache2/php.ini» устарел даже ТОГДА, но это дало мне подсказку, где его найти. Для PHP7 это немного отличается от PHP5, но принцип тот же.

Возможно, это поможет какому-нибудь беспомощному придурку вроде меня.

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

EDIT: полный текст моей заметки самому себе:

Чтобы изменить максимальный размер загрузки, отредактируйте upload_max_filesize и [при необходимости?] post_max_size в /etc/php/7.0/apache2/php.ini (или в более старых версиях: /etc/php5/apache2/ php.ini )

/etc/init.d/apache2 перезапустить

ПОВТОРИТЕ РЕДАКТИРОВАНИЕ: поскольку вы импортируете большие файлы, вам может потребоваться изменить время ожидания для их обработки. В моем случае файл с именем «config.default.php» был найден в /usr/share/phpmyadmin/libraries/config.default.php с переменной $cfg['ExecTimeLimit'] = 300; Например, я изменил свой на 900 для огромного импорта. После этого вам нужно перезапустить apache

У меня была такая же проблема. Я попробовал три способа, которые обычно предлагались:

  1. functions.php
  2. php.ini
  3. .htaccess

нет, если это решило мою проблему. Я использую godaddy и наткнулся на предложенное решение, которое было:

  1. перешел на "Веб-хостинг", затем "Управление"
  2. В разделе "Программное обеспечение" выберите "Выбрать версию PHP".
  3. Выберите «Переключиться на параметры PHP» в правом верхнем углу таблицы с синим цветом шрифта.
  4. В нижней части у вас, вероятно, будет upload_max_filesize = 2M
  5. Теперь вы можете изменить его.
  6. Обязательно нажмите кнопку Сохранить!
  7. Теперь перейдите в панель управления wp-admin, выберите «Медиа», затем «Добавить».

Вуаля! Теперь у вас другой максимальный размер загружаемого файла :)

Ну, я хотел бы добавить сюда свои 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, также не забудьте сделать так, чтобы ваш ftp-сервис показывал скрытые файлы, а ваш локальный компьютер — чтобы это отображалось, потому что файл .htaccess был скрыт на моем локальном ноутбуке и на моем Веб-сайт. Он был доступен в папке public_html, я просто скачал его и добавил в конец файла следующие коды, а затем загрузил обратно на сервер:

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

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

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

(mt) Media Temple прилагает согласованные усилия для обеспечения точности этого контента. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.

Публикация этой информации не означает поддержку этой статьи. Эта статья предоставлена ​​исключительно в качестве любезности для наших клиентов.

Ограничения загрузки PHP

Текущие ограничения загрузки PHP по умолчанию на вашем хостинге WordPress в настоящее время установлены следующим образом.

  • upload_max_filesize = 64M
  • post_max_size = 64M

Увеличение лимитов PHP

Обычно эти настройки находятся в файле php.ini. В службе хостинга WordPress эти ограничения можно настроить в файле .user.ini. Если вы впервые пытаетесь изменить эти ограничения, вам нужно будет создать файл с именем «.user.ini» в каталоге webroot или «./html». После создания файла вы можете добавить следующие строки, чтобы установить ограничения php. Эти переменные могут быть увеличены для удовлетворения ваших потребностей. Однако рекомендуется, чтобы значения не превышали 256 М.

После того как вы внесете эти изменения и сохраните файл, это все, что вам нужно сделать. Веб-сервер Apache не нужно перезапускать в службе хостинга WordPress.

Дополнительная информация

Если upload_max_filesize больше, чем post_max_size, вы должны увеличить post_max_size, чтобы он был больше, чем upload_max_size.

Ресурсы

(mt) Media Temple прилагает согласованные усилия для обеспечения точности этого контента. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.

Публикация этой информации не означает поддержку этой статьи. Эта статья предоставлена ​​исключительно в качестве любезности для наших клиентов. Пожалуйста, ознакомьтесь с нашим заявлением о поддержке для получения дополнительной информации.

Симптом

Я не могу загружать большие файлы с помощью PHP-скриптов.

Вы можете загружать небольшие файлы с помощью PHP, но большие файлы не загружаются. Или вы получаете сообщение об ошибке, например "Разрешенный размер памяти 103809024 байт исчерпан (попытка выделить 0 байт)".

Решение

В PHP есть несколько параметров конфигурации для ограничения ресурсов, потребляемых сценариями. По умолчанию в PHP разрешена загрузка файлов размером не более 2 МБ.

Попробуйте увеличить следующие значения в файле php.ini, например:

В сетке после внесения этих изменений и сохранения файла это все, что вам нужно сделать. Веб-сервер Apache не нужно перезапускать (и, чтобы было ясно, у вас нет такого уровня доступа на платформе Grid).

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

Дополнительная информация

Если upload_max_filesize больше, чем post_max_size, вы должны увеличить post_max_size, чтобы он был больше, чем upload_max_size.

Если значение post_max_size больше, чем memory_limit, вы должны увеличить memory_limit, чтобы оно было больше, чем post_max_size.

Ресурсы

СНАЧАЛА ПРОЧИТАЙТЕ МЕНЯ
Эта статья была скопирована из базы знаний Parallels в качестве любезности для клиентов наших серверов DV. Поскольку они являются авторитетным источником информации, освещенной в этой теме, мы рекомендуем вам проверить их оригинальную статью, поскольку ее содержание может быть изменено.

(mt) Media Temple прилагает согласованные усилия для обеспечения точности этого контента. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.

Публикация этой информации не означает поддержку этой статьи. Эта статья предоставлена ​​исключительно в качестве любезности для наших клиентов. Пожалуйста, ознакомьтесь с нашим заявлением о поддержке для получения дополнительной информации.

Симптом

Я не могу отправлять вложения по веб-почте или загружать большие файлы с помощью PHP-скриптов.

Вы можете загружать небольшие файлы через веб-почту или с помощью PHP-скрипта, но файлы большего размера загружать нельзя, или вы получаете сообщение об ошибке "Страница не может быть отображена" при нажатии кнопки "Отправить сообщение". Если отчеты об ошибках включены, вы получаете сообщение об ошибке "Разрешенный размер памяти 8388608 байт исчерпан (попытка выделить 0 байт)" или "Слишком большой объект запроса".

Решение

В PHP есть несколько параметров конфигурации для ограничения ресурсов, потребляемых сценариями. По умолчанию в PHP разрешена загрузка файлов размером не более 2 МБ.

Попробуйте увеличить, например, следующие значения в php.ini:

Существует несколько способов редактирования php.ini на вашем DV-сервере. В этой статье базы знаний описано, как это сделать:

После внесения этих изменений может потребоваться перезапустить Apache. Вы можете сделать это через Plesk или через SSH с помощью следующей команды:

Дополнительная информация

Если upload_max_filesize больше, чем post_max_size, вы должны увеличить post_max_size, чтобы он был больше, чем upload_max_size.

Если значение post_max_size больше, чем memory_limit, вы должны увеличить memory_limit, чтобы оно было больше, чем post_max_size.

Автор Rahul, 22 февраля 2015 г. Чтение: 2 минуты Обновлено: 30 октября 2020 г.

Директивы upload_max_filesize и post_max_size определяют максимальный размер файла, разрешенный PHP для загрузки на сервер. По умолчанию для этого значения установлено значение 2M. Вы можете увеличить это значение в соответствии с требованиями вашего приложения.

Мы никогда не рекомендуем слишком сильно увеличивать это значение на рабочем сервере. Учебное пособие поможет вам изменить ограничение максимального размера загружаемого файла в PHP.

Вам может понравиться:

1. Найдите правильный php.ini

Во-первых, вам нужно найти загруженный файл конфигурации PHP (php.ini) в вашей системе. Для PHP CLI выполните приведенную ниже команду, чтобы найти файл php.ini.

Для веб-сервера, такого как Apache/Nginx, создайте сценарий PHP с функцией phpinfo() и получите доступ в веб-браузере. Это покажет вам расположение используемого файла php.ini.

2. Изменить значение upload_max_filesize

Переменная upload_max_filesize определяет максимальный размер загружаемого файла. Переменная post_max_size определяет максимальный размер данных, которые могут быть опубликованы за раз. Поэтому вам нужно установить обе переменные upload_max_filesize и post_max_size, чтобы изменить максимальный размер загружаемого файла в PHP.

Отредактируйте файл php.ini, увеличьте максимально допустимый размер загружаемого файла, отредактируйте файл конфигурации PHP «php.ini» и увеличьте размер следующего значения.

Сохраните файл конфигурации и перезапустите веб-сервер, чтобы перезагрузить изменения.

3. Установить max_file_uploads в PHP

Кроме того, установите максимальное количество файлов, которые можно загрузить с помощью директивы set max_file_uploads одного запроса.

4. Отключить загрузку файлов в PHP

Если нашему приложению не нужно загружать файлы, мы можем просто отключить его, установив Off в директиве file_uploads.

Заключение

В этом руководстве вы узнали, как изменить директивы upload_max_filesize, post_max_size в конфигурации PHP. Также вы можете включить или отключить загрузку файлов на свой сервер.

Читайте также: