Изменить максимальный размер загружаемого файла

401

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

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

Теги:

14 ответов

742
Лучший ответ

Вам нужно установить значение upload_max_filesize и post_max_size в php.ini:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

После изменения файлов (ов) php.ini вам необходимо перезапустить HTTP-сервер, чтобы использовать новую конфигурацию.

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

См. Описание основных директив php.ini.

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

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

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

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

php_value upload_max_filesize 40M
php_value post_max_size 42M
  • 2
    Кажется, что это не всегда работает. На моей dev-машине установка соответствующего значения в .htaccess сделала свою работу. Однако на общем хостинге этот параметр не работает, однако сообщение об ошибке показывает, что максимально допустимый размер загрузки - это значение, которое я установил в .htaccess. Так что случается очень странная ситуация.
  • 3
    Похоже, что добавление этого в .htaccess работает, только если вы используете Apache. Попробуйте и у меня отлично работает.
Показать ещё 2 комментария
51

У меня была та же проблема, и я создал файл .user.ini и поместил его в каталог, в котором была размещена загрузка script. Внутри этого файла я установил эти два значения:

  upload_max_filesize = 40M

  post_max_size = 40M

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

  • 2
    Отлично. Работает с включенным fastcgi тоже. Требуется PHP5.3 или новее.
  • 1
    Хорошо, это работает на общем сервере, когда больше ничего не будет работать. Отличная находка.
48

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

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

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

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

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

php -i | grep -i "loaded configuration file"

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

upload_max_filesize = 2M
post_max_size = 2M

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

У меня есть сообщение в блоге с немного дополнительной информацией. http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini-file-for-wordpress

  • 4
    Он показывает файл как /etc/php5/cli/php.ini но мой конфигурационный файл - /etc/php5/apache2/php.ini . Какой-то вводящий в заблуждение.
  • 0
    Есть 2 файла php.ini ... и с помощью этой команды в ответе вы увидите, какой из них вы используете! Так что там нужно внести изменения, чтобы вступить в силу!
34

У меня такая же проблема в прошлом... и я исправил ее через файл .htaccess

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

Это пример, он отлично подходит для меня:

<IfModule mod_php5.c>
   php_value upload_max_filesize 40M
   php_value post_max_size 40M
</IfModule>

И это php-ссылка, если вы хотите понять больше. http://php.net/manual/en/configuration.changes.php

  • 5
    При условии, что у вас есть возможности переопределения.
  • 3
    Для поддержки PHP.7 добавьте тот же блок с помощью: <IfModule mod_php7.c>
11

Я решил эту проблему, создав файл с именем .user.ini в каталоге, где находятся скрипты PHP файлов (это означает, что любой PHP скрипт в этом каталоге получает ограничение на размер нового файла)

Содержимое .user.ini было:

upload_max_filesize = 40M
post_max_size = 40M
  • 1
    Это решение для меня. Просто отлично работает. Если вы используете фреймворк, такой как codeignitor, «.user.ini» должен находиться в том же месте, что и index.php
  • 0
    Благодарю. Это работает для меня. Это идеально подходит для виртуального хостинга, где у вас нет доступа к php.ini. Я бы просто добавил, что он доступен начиная с PHP 5.3
3

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

  • functions.php
  • php.ini
  • .htaccess

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

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

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

3

Хорошо, я хотел бы добавить сюда 2 цента.

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

"Ваш PHP был настроен на" родной "режим, что означает, что вы не можете переопределить эти значения. Я изменил вас на" 5.6 ", поэтому вы должны быть добры к идти".

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

Изображение 746

Изображение 747

Изображение 748

Изображение 749

Изображение 750

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

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

Спасибо.

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

2

Возможно, это должен быть комментарий к @seanb123 и @Fredrick Gauss, комментирующий его комментарий, но для меня в Drupal 8.1 с PHP 7 файл, который мне нужно было изменить, был здесь:

/etc/php/7.0/apache2/php.ini

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

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

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

Сайт, который помог мне: http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

Здесь также рассматривается: Ограничение размера файла импорта в PHPMyAdmin

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

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

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
1

Не все эти решения работают для меня!! (по умолчанию установлено 32 МБ). Проблема в большинстве случаев max_allowed_packet

Я работаю на localhost и использую MAMP.

Вот решения:

1. Если у вас нет my.ini

Добавить

--max_allowed_packet=168435456

Для

...\MAMP\bin\startMysql.sh

2. Если у вас есть my.ini

Под

[mysqld]

Добавить

max_allowed_packet=100M

СДЕЛАНО!

0

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

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

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

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

0

Три вещи, которые вам нужно проверить.

upload_max_filesize, memory_limit и post_max_size в файле конфигурации php.ini.

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

Обычно post_max_size и memory_limit должны быть больше upload_max_filesize.


Итак, три переменные всего, которые необходимо проверить, чтобы быть абсолютно уверенными.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню