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

Я использую 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.

12 ответов

Решение

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

С другой стороны, я не думаю, upload_max_filesize может быть установлен с помощью ini_set(), "Официальный" список утверждает, что это PHP_INI_PERDIR,

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

php_value upload_max_filesize 10M
php_value post_max_size 10M

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

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

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

upload_max_filesize = 150M
post_max_size = 150M

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

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

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

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

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

php_value upload_max_filesize 10M

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

Риск заключается в том, что злоумышленник может отправлять очень большие POST-запросы и перегружать память вашего сервера и ЦП, поскольку ему приходится анализировать и обрабатывать эти запросы, прежде чем обрабатывать их в вашем PHP-скрипте.

Поэтому лучше ограничить изменение этого параметра некоторыми файлами или каталогами. Например, если я хочу /admin/files/ и /admin/images/, я могу использовать:

      <If "%{REQUEST_URI} =~ m!^/admin/(files|images)/! && -n %{HTTP_COOKIE}">
    php_value post_max_size 256M
    php_value upload_max_filesize 256M
</If>

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

Этот параметр можно использовать в файлах конфигурации сервера Apache, а также в файлах .htaccess.

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

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

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

post_max_size = 128M

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

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

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

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

Я столкнулся с той же проблемой, но обнаружил, что не все параметры конфигурации могут быть установлены с помощью функции ini_set(), отметьте это там, где может быть установлен параметр конфигурации

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

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

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

Вы можете использовать также в PHP-файле, как это

<?php ini_set('upload_max_filesize', '200M'); ?>
Другие вопросы по тегам