Изменение upload_max_filesize на PHP

84

Я использую PHP 5.3.0 и обнаружил что-то, что может быть ошибкой (в этом случае я сообщу об этом) или может быть мной, поэтому я прошу убедиться.

При запуске этого кода:

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

Я получаю:

2M, 8M

Это несмотря на то, что мои настройки php.ini выше:

upload_max_filesize = 10M
post_max_size = 10M

(встречается только один раз)

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

Обновление : похоже, перезапуск Apache исправил это - я всегда думал, что его не нужно перезапускать, если вы изменили php.ini.

Росс
источник
9
«Я всегда думал, что его не нужно перезапускать, если вы изменили php.ini». PHP CLI немедленно принимает изменения, потому что он анализирует php.ini при каждом вызове. mod_php анализирует php.ini один раз - при запуске apache.
Фрэнк Фармер,
Недавно у меня была такая же проблема. upload_max_filesize не вступит в силу без перезапуска Apache. Я использую PHP 5.2.9. После перезагрузки все работает нормально.
Haluk
Чтобы избежать полного перезапуска apache, просто используйте
команду

Ответы:

69

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

С другой стороны, я не думаю, что upload_max_filesizeможно использовать ini_set(). В «официальном» списке говорится, что это так PHP_INI_PERDIR.

Роб
источник
12
Вы правильно думаете! Вы не можете установить upload_max_filesize с помощью ini_set (), потому что upload_max_filesize является типом PHP_INI_PERDIR, который означает, что его можно изменять только через: php.ini, .htaccess или httpd.conf, как указано на: php.net/manual/en/configuration.changes.modes. php
Marco Demaio
2
Фактически, вы можете использовать сокращенную запись вне PHP.ini; Вы можете использовать его в , .htaccessа также с ini_set. Хотя, возможно, не во всех версиях.
Protector
70

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

php_value upload_max_filesize 10M
php_value post_max_size 10M
karim79
источник
1
Нет, это мой собственный экземпляр Apache / PHP на моем компьютере (это Windows, если это необходимо). Я попробую добавить их в конфигурацию Apache.
Росс,
5
Обновление: это влияет на это (меняет их на 10), поэтому этот метод работает. Я все еще не понимаю, почему он не работает в php.ini или с использованием ini_set.
Росс,
+1 это определенно лучший вариант, если вы не можете добраться до php.ini - большое спасибо.
Alex Coplan
3
Обратите внимание, что это работает только с Apache, использующим PHP как модуль, а не как CGI
ChrisV
Я бы сказал, что это предпочтительный метод даже с доступом к php.iniфайлу. Позволяет вам установить эти разрешения на основе необходимости, а не как глобальный параметр.
Брайант Джексон
42

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

Я сделал ini-файл со значениями в нем. Просто как тот:

Создайте файл с именем ".user.ini" и добавьте свои значения

upload_max_filesize = 150M
post_max_size = 150M

Бум, проблема решена.

фунт
источник
Сработало у меня! Благодаря!
Джастин Патни
4
«В дополнение к основному файлу php.ini, PHP сканирует файлы INI в каждом каталоге, начиная с каталога запрошенного файла PHP и продвигаясь до корня текущего документа». php.net/manual/en/configuration.file.per-user.php
до
1
Отлично работает с сайтом на wordpress! Благодаря!
avenged_badger 07
Это отлично сработало, поскольку я не могу сделать это из .htaccess. Спасибо чувак!
Стратег
PHP по умолчанию перечитывает файл user.ini каждые 5 минут. Так что
Андрей Яременко
11

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

upload_max_filesize = "20M"
post_max_size = "25M"

Это рекомендуемое решение для Heroku.

двенаус
источник
6

Этим также можно управлять с помощью конфигурации apache. Проверьте httpd.conf и / или .htaccess на что-то вроде следующего:

php_value upload_max_filesize 10M
Байрон Уитлок
источник
0

Если вы работаете на локальном сервере, таком как wamp или xampp, убедитесь, что он использует php.ini, как вы думаете. Эти серверы обычно по умолчанию используют php.ini, которого нет в вашей папке html docs.

Пляжный домик
источник
0

Это решение можно применить, только если проблема связана с установкой WordPress!

Если у вас нет доступа к FTP или вам лень редактировать файлы,

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

Сахан
источник
0

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

Сначала откройте файл php.ini в текстовом редакторе. Найдите переменную upload_max_filesize и укажите размер, который вы хотите увеличить.

Найдите переменную post_max_size и укажите размер, который вы хотите увеличить.

post_max_size = 128M

Вы можете проверить это здесь

хаммад хан
источник
-1

если вы используете ini_set на лету, то вы найдете здесь http://php.net/manual/en/ini.core.php информацию, которая, например, upload_max_filesize и post_max_size не может быть изменена на лету (PHP_INI_PERDIR).

Только изменение конфигурации php.ini, .htaccess или vhost может изменить эти переменные.

мошенник
источник
-11

Вы также можете использовать в файле php вот так

<?php ini_set('upload_max_filesize', '200M'); ?>
Нишант Патель
источник