Зміна 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.
Frank Farmer

У мене була така сама проблема нещодавно. upload_max_filesize не набуде чинності без перезапуску Apache. Я працюю на PHP 5.2.9. Після перезапуску все працює нормально.
Халук

Щоб уникнути повного перезапуску apache, просто скористайтеся "sudo service apache2 reload"
user1048839

Відповіді:


68

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

З іншого боку, я не думаю, що це upload_max_filesizeможна встановити за допомогою ini_set(). В "офіційному" списку зазначено, що це так PHP_INI_PERDIR.


10
Ви думаєте правильно! Ви не можете встановити upload_max_filesize за допомогою ini_set (), оскільки upload_max_filesize - це тип PHP_INI_PERDIR, що означає, що його можна змінювати лише через: php.ini, .htaccess або httpd.conf, як зазначено на: php.net/manual/en/configuration.changes.modes. php
Марко Демайо

2
Насправді, ви можете використовувати скорочені позначення поза PHP.ini; ви можете використовувати його в, .htaccessа також із ini_set. Можливо, не у всіх версіях.
Захисник один,

70

Чи використовуєте ви провайдера спільного хостингу? Це можуть бути основні налаштування, які замінюють все, що ви намагаєтесь змінити. Ви пробували додавати їх у свій .htaccess?

php_value upload_max_filesize 10M
php_value post_max_size 10M

1
Ні, це мій власний екземпляр Apache / PHP на моїй машині (це Windows, якщо це актуально). Я спробую додати їх до конфігурації Apache.
Росс

5
Оновлення: це впливає на це (змінює їх на 10), тому цей метод працює. Я все ще досить заплутаний, чому він не працює у php.ini або не використовує ini_set.
Росс

+1 це точно шлях, якщо ви не можете перейти на php.ini - велике спасибі.
Алекс Коплан,

3
Зауважте, це працює лише з Apache, що працює на PHP як модуль, а не як CGI
ChrisV

Я б сказав, що це найкращий метод навіть при доступі до php.iniфайлу. Дозволяє встановлювати ці дозволи на основі потреби, а не як загальне налаштування.
Bryant Jackson

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

Це чудово працювало, оскільки я не можу зробити це з .htaccess. Дякую людино!
Стратег

PHP за замовчуванням перечитує файл user.ini кожні 5 хвилин. Тож
Андрій Яременко,

10

Я змусив це працювати, використовуючи файл .user.ini у тому ж каталозі, що і мій скрипт index.php, який завантажує мою програму. Ось вміст:

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

Це рекомендоване рішення для Heroku.


5

Цим також можна керувати за допомогою конфігурації 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 змінює ці змінні.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.