Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Настройки PHP/Параметры конфигурации информации
Имя По умолчанию Место изменения Список изменений
assert.active "1" INI_ALL Устарело с PHP 8.3.0
assert.bail "0" INI_ALL Устарело с PHP 8.3.0
assert.warning "1" INI_ALL Устарело с PHP 8.3.0
assert.callback NULL INI_ALL Устарело с PHP 8.3.0
assert.quiet_eval "0" INI_ALL Удалено в PHP 8.0.0
assert.exception "1" INI_ALL До PHP 8.0.0 значение по умолчанию было "0". Устарело с PHP 8.3.0
enable_dl "1" INI_SYSTEM Эта возможность устарела и будет удалена в будущем.
max_execution_time "30" INI_ALL  
max_input_time "-1" INI_PERDIR  
max_input_nesting_level "64" INI_PERDIR  
max_input_vars 1000 INI_PERDIR  
zend.enable_gc "1" INI_ALL  
Дополнительная информация и описания режимов INI_* даны в разделе «Места установки параметров конфигурации».

Краткое разъяснение конфигурационных директив.

assert.active bool

Включение выполнение assert(). zend.assertions следует использовать вместо этого для управления поведением функции assert().

Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 8.3.0 и её крайне не рекомендуется использовать.

assert.bail bool

Завершение работы скрипта при провале проверки утверждений.

Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 8.3.0 и её крайне не рекомендуется использовать.

assert.warning bool

Вызов предупреждений PHP для каждой проваленной проверки утверждения.

Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 8.3.0 и её крайне не рекомендуется использовать.

assert.callback string

Пользовательская функция, вызываемая при провале проверки утверждений.

assert.quiet_eval bool
Внимание

Данная функциональность была УДАЛЕНА в PHP 8.0.0.

Используйте эту настройку функции error_reporting() во время выполнения проверки утверждений. При включении настройки сообщения об ошибках во время проверки утверждений показываться не будут (неявный вызов error_reporting(0)). Если настройка выключена, ошибки будут выдаваться в соответствии с настройками error_reporting()

assert.exception bool

Выбрасывает исключение AssertionError в случае неудачной проверки утверждения.

Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 8.3.0 и её крайне не рекомендуется использовать.

enable_dl bool

Директива позволяет включать и выключать динамическую подгрузку модулей PHP с помощью функции dl().

Главной причиной, по которой требуется выключение динамической загрузки, является безопасность. С помощью динамической загрузки можно обойти все open_basedir ограничения. По умолчанию динамическая загрузка разрешена.

max_execution_time int

Эта директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, парсер завершает работу скрипта. Этот механизм помогает предотвратить зависание сервера из-за плохо написанного скрипта. По умолчанию на загрузку даётся 30 секунд. Если PHP запущен из командной строки, это значение по умолчанию равно 0.

В системах, отличных от Windows, на максимальное время выполнения не влияют системные вызовы, потоковые операции и т.п. За дополнительной информацией обращайтесь к документации к функции set_time_limit().

Веб-серверы обычно имеют свои настройки времени ожидания, по превышении которого сами завершают выполнение скрипта PHP. В Apache есть директива Timeout, в IIS есть функция CGI timeout. В обоих случаях по умолчанию установлено 300 секунд. Точные значения можно узнать из документации к веб-серверу.

max_input_time int

Эта директива задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться. Значение по умолчанию -1, что означает, что будет использоваться max_execution_time. Если установить равным 0, то ограничений по времени не будет.

max_input_nesting_level int

Задаёт максимальную глубину вложенности входных переменных (то есть $_GET, $_POST.)

max_input_vars int

Сколько входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, а все последующие переменные в запросе игнорируются.

zend.enable_gc bool

Включает или отключает сборщик циклических ссылок.

add a note add a note

User Contributed Notes 4 notes

up
21
rubo77
11 years ago
I think it is important to mention that some distributions apply bugfixes for older versions so "Available since PHP 5.3.9" is not reliable, for example:
debian squeeze implemented the directive max_input_vars in PHP 5.3.3-7+squeeze7 (see http://ftp-master.metadata.debian.org/changelogs/main/p/php5/php5_5.3.3-7+squeeze17_changelog )
up
1
csongor at halmai dot hu
4 years ago
The max_input_vars setting is defined as "How many input variables may be accepted" but this is not completely correct. There is a +1 factor.

For example, if the value is 2 then the $_POST array can have up to 3 elements, if it is 1000 then it can have 1001 elements, and so on.

I want to stop the execution of the php code when there is a chance that some data was not received. Therefore, instead of relying on the standard E_WARNING, I do this in my code.

<?php
$max_input_vars
= ini_get('max_input_vars');
if (
count($_POST) === $max_input_vars + 1) {   // note the +1 here
   
throw new Exception();
}
?>

If the size of the $_POST array reaches the maximum then there is the chance that there was more data so it is better to stay on the safe side and increase the config value.
up
-4
horst at pepperzak.com
13 years ago
Caution: Although magic_quotes_gpc is flagged as dreprecated the default value is still "ON". So you will explicitly have to put

magic_quotes_gpc = Off

into your php.ini. Commeting out the magic_quotes_gpc-line will not turn magic_quotes_gpc off.
up
-86
Anonymous
10 years ago
The max_input_vars limit can be overcome by reading the input in raw, i.e.:
<?php
  $sRawInputData
= fopen( 'php://input' );
?>
To Top