2010-02-02 2 views
374

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

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

ответ

663

Вам необходимо установить значение 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.

См. Description of core php.ini directives.

+2

Возможно, вы знаете маршрут по умолчанию, который хранится в файле php.ini? –

+1

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

+4

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

116

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

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

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

php_value upload_max_filesize 40M 
php_value post_max_size 42M 
+1

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

+3

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

43

Вы также можете использовать ini_set function (только для версии 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.

+28

В последних версиях PHP эти ini-settings - это [PHP_INI_PERDIR] (http://www.php.net/manual/en/ini.list.php), поэтому вы не можете установить их в своем скрипте. Подробнее см. Здесь [здесь] (http://www.php.net/manual/en/configuration.changes.modes.php). – acme

30

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

При внесении изменений на PHP configration через .htaccess вы должны положить configrations в IfModule тег, другой, что Внутренняя ошибка сервера .

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

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

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

+5

Если у вас есть возможности переопределения. –

+0

Для поддержки PHP.7 добавьте тот же блок с помощью:

50

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

upload_max_filesize = 40M 

    post_max_size = 40M 

и он отлично подойдёт для меня!

+2

Отлично. Работает также с fastcgi. [Требуется PHP5.3 или новее.] (Http://php.net/manual/en/configuration.file.per-user.php) – Ciantic

+1

Хорошо, это сработало на общем сервере, когда ничего не получилось. Отличная находка. –

+0

Это также зафиксировало мою проблему - спасибо! –

36

Чтобы найти 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

+2

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

+0

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

1

Non из этих решений работают для меня !! (по умолчанию установлено 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 

СДЕЛАНО!

9

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

Содержания .user.ini было:

upload_max_filesize = 40M 
post_max_size = 40M 
+0

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

+0

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

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 к родным, они изменили его на 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 

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

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

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

Спасибо.

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

0

Три вещи, которые необходимо проверить.

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

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

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


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

1

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

  1. функции.PHP
  2. php.ini
  3. .htaccess

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

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

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

0

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

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

Я мод, вероятно, четыре других php.ini файлов, в том числе одна моя система называется "Loaded Configuration File" (PHP -i | Grep -i "загружен файл конфигурация") и один найденные на информации .php, но никто из них не помог. Я нашел правильный путь на сайте с 2012 года, где он сказал, что путь был устаревшим даже НАЗАД. Конечно, для PHP7 это немного отличается от того, что он сказал тогда: /etc/php5/apache2/php.ini, но концепция была такой же.

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

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

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

Это также рассматривается здесь: Import file size limit in PHPMyAdmin

-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); 
Смежные вопросы