Перейти к содержимому
Поиск
Php Разработка

PHP: полный мануал с примерами, функциями и ООП

Практический мануал PHP: от переменных и читаемого кода до безопасных форм, интеграций, базы данных и ООП на примере магазина. Учебный маршрут, поиск функций, подробные примеры, разбор ошибок и исходники для скачивания.

Александр НекрасовИзменено:
Практический мануал PHP: от переменных и функций к объектной модели интернет-магазина
PHP 8.5.11468 глав6256 карточек справочника
Дерево руководства

Глава 464 · Официальная база → практическое применение

Отладка и конфигурация PHP: configure, php.ini и фактический SAPI

Как отличить параметр сборки, директиву runtime и локальную диагностику и проверить изменение в нужном процессе.

Отладка PHP: карта возможностей

Отладка начинается с наблюдаемого симптома: входные данные, ветка выполнения, исключение, stderr и состояние зависимости. Выводить секреты посетителю нельзя; локальная диагностика, журнал и debugger решают разные задачи.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Отладка в PHP
Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

Debugging in PHP

Что именно проверять при отладке

Отладка начинается с наблюдаемого симптома: входные данные, ветка выполнения, исключение, stderr и состояние зависимости. Выводить секреты посетителю нельзя; локальная диагностика, журнал и debugger решают разные задачи.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

PHP поставляется с базовым интерактивным отладчиком командной строки phpdbg.

В большинстве IDE есть поддержка » Xdebug, бесплатного инструмента отладки, который позволяет выполнять отладку PHP-приложений в один шаг.

Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

PHP is shipped with a basic command line interactive debugger, phpdbg.

Most IDEs have support for » Xdebug, a free debug tool, which allows for single step debugging your PHP applications.

Проверить тот SAPI, в котором запущена диагностикаСамостоятельный пример
<?php
echo PHP_SAPI === 'cli' ? "Диагностика CLI\n" : "Диагностика веб-SAPI\n";
Ожидаемый результат
Диагностика CLI

Пример выполнен из CLI. Тот же файл через FPM может загрузить другой php.ini и набор расширений, поэтому CLI-проверка не доказывает настройки сайта.

Параметры configure: как читать сборку PHP

Параметр configure относится к сборке интерпретатора, а не к поведению одного запроса. На готовом сервере сначала выясняют источник пакета и вывод php -i; пересборка нужна лишь там, где этим действительно управляет команда.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

Параметры сборки ядра PHP

Параметр configure относится к сборке интерпретатора, а не к поведению одного запроса. На готовом сервере сначала выясняют источник пакета и вывод php -i; пересборка нужна лишь там, где этим действительно управляет команда.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Ниже приведён частичный список опций конфигурации, используемых скриптами configure при компиляции в Unix-подобных окружениях. Большинство опций конфигурации приведено в соответствующих местах на страницах с описанием модулей, а не здесь. Чтобы получить полный актуальный список опций конфигурации, запустите ./configure --help в каталоге исходного кода PHP после запуска команды autoconf (смотрите также раздел установки PHP). Вам также может быть интересно почитать документацию команды » GNU configure для получения информации о дополнительных опциях команды configure, таких, как --prefix=PREFIX.

Замечание:

Эти настройки используются только во время компиляции. Если вы хотите изменить конфигурацию PHP во время выполнения, пожалуйста смотрите главу Конфигурация во время выполнения.

Опции конфигурации в PHP

Различные опции

--enable-debug

Компилировать с информацией об отладке.

--with-layout=TYPE

Устанавливает, каким образом установленные файлы будут расположены. TYPE принимает значения PHP (по умолчанию) или GNU. Обратите внимание, что при установке manpages под PREFIX (по умолчанию) следует выбрать стиль GNU, чтобы они были найдены в пути поиска утилиты manpath.

--with-pear=DIR

Установить PEAR в директорию DIR (по умолчанию PREFIX/lib/php).

--without-pear

Не устанавливать PEAR.

--enable-sigchild

Включить собственный дескриптор SIGCHLD для PHP.

--disable-rpath

Не передавать дополнительные пути для поиска библиотек времени исполнения.

--enable-libgcc

Явно использовать libgcc.

--enable-php-streams

Включить экспериментальную функциональность потоков PHP. Используйте только в случае, если вы тестируете код!

--with-zlib-dir[=DIR]

Определить местонахождение библиотеки zlib.

--with-tsrm-pthreads

Использовать потоки (threads) POSIX (по умолчанию).

--enable-shared[=PKGS]

Собирать общие библиотеки [по умолчанию=yes].

--enable-static[=PKGS]

Собирать статические библиотеки [по умолчанию=yes].

--enable-fast-install[=PKGS]

Оптимизировать для быстрой установки [по умолчанию=yes].

--with-gnu-ld

Предполагать, что компилятор С использует линкер GNU ld [по умолчанию=no].

--disable-libtool-lock

Избегать блокирования (может испортить параллельные сборки).

--with-pic

Пытаться использовать только PIC/не PIC объекты [по умолчанию=use both (использовать оба)]

--enable-versioning

Экспортировать только необходимую информацию для отладки. Смотрите INSTALL для дополнительной информации.

Опции PHP

--enable-maintainer-mode

Включает правила сборки и зависимости make, неиспользуемые (а иногда запутывающие) в обычном установщике.

--with-config-file-path=PATH

Устанавливает путь для поиска php.ini, значение по умолчанию PREFIX/lib.

--disable-short-tags

Запрещает использование краткой формы записи начального тега <? по умолчанию.

--with-libdir

Определяет каталог библиотек для сборки PHP в Unix-системах. Для 64-битных систем опция требует особого аргумента --with-libdir=lib64 для директории lib64.

--enable-zts

Включает безопасность потоков. До версии PHP 8.0.0 на системах, отличных от Windows, эта опция называлась --enable-maintainer-zts.

Опции SAPI

Следующий список включает доступные опции SAPI (Server Application Programming Interface) для PHP.

--with-apxs[=FILE]

Собирает динамический модуль для Apache. FILE — это опциональный путь к инструменту Apache apxs, который используется для apxs по умолчанию. Убедитесь в том, что указали версию apxs, которая действительно установлена в системе, а не ту, которая находится в исходниках Apache.

--with-apache[=DIR]

Собирает статичный модуль для Apache. DIR - это верхний уровень директории сборки Apache, по умолчанию /usr/local/apache.

--with-mod_charset

Включает таблицы перекодировки для модуля mod_charset (для русской версии Apache).

--with-apxs2[=FILE]

Собирает динамический модуль для Apache 2.0. FILE - это опциональный путь к инструменту "Apache apxs", который используется для apxs по умолчанию.

--disable-cli

Отключает сборку CLI-версии PHP (опция также вызывает --without-pear). Больше информации можно получить в разделе Работа с PHP из командной строки.

--enable-phpdbg

Включает поддержку модуля SAPI для интерактивного дебаггера phpdbg.

--enable-embed[=TYPE]

Включает сборку встроенной библиотеки SAPI. TYPE может принимать значение shared или static, по умолчанию установлено shared.

--with-servlet[=DIR]

Включает поддержку сервлетов. DIR - это базовая директория установки JSDK. SAPI требует java-модули, может быть собрана как доступная для dl.

--disable-cgi

Отключает сборку CGI-версии PHP.

Этот аргумент включает FastCGI, который предварительно должен быть включён аргументом --enable-fastcgi.

Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

Below is a partial list of configure options used by the PHP configure scripts when compiling in Unix-like environments. Most configure options are listed in their appropriate locations on the extension reference pages and not here. For a complete up-to-date list of configure options, run ./configure --help in your PHP source directory after running autoconf (see also the Installation chapter). You may also be interested in reading the » GNU configure documentation for information on additional configure options such as --prefix=PREFIX.

Note:

These are only used at compile time. If you want to alter PHP's runtime configuration, please see the chapter on Runtime Configuration.

Configure Options in PHP

Misc options

--enable-debug

Compile with debugging symbols.

--with-layout=TYPE

Sets how installed files will be laid out. Type is one of PHP (default) or GNU. Note that if installing manpages under PREFIX (default), choose the GNU style in order for them to be found in the search path of manpath utility.

--with-pear=DIR

Install PEAR in DIR (default PREFIX/lib/php).

--without-pear

Do not install PEAR.

--enable-zend-max-execution-timers

Use POSIX per-thread timers for max_execution_time tracking instead of the process-wide setitimer(). These timers measure elapsed time (CLOCK_BOOTTIME, or CLOCK_MONOTONIC on FreeBSD), whereas the default setitimer(ITIMER_PROF) measures CPU time, so time spent sleeping or waiting on I/O counts towards the limit. Requires timer_create() support: available on Linux, and on FreeBSD as of PHP 8.4.0. Available since PHP 8.1.0. Enabled by default for ZTS builds since PHP 8.3.0.

--enable-sigchild

Enable PHP's own SIGCHLD handler.

--disable-rpath

Disable passing additional runtime library search paths.

--enable-libgcc

Enable explicitly linking against libgcc.

--enable-php-streams

Include experimental PHP streams. Do not use unless you are testing the code!

--with-zlib-dir[=DIR]

Define the location of zlib install directory.

--with-tsrm-pthreads

Use POSIX threads (default).

--enable-shared[=PKGS]

Build shared libraries [default=yes].

--enable-static[=PKGS]

Build static libraries [default=yes].

--enable-fast-install[=PKGS]

Optimize for fast installation [default=yes].

--with-gnu-ld

Assume the C compiler uses GNU ld [default=no].

--disable-libtool-lock

Avoid locking (might break parallel builds).

--with-pic

Try to use only PIC/non-PIC objects [default=use both].

--enable-versioning

Export only required symbols. See INSTALL for more information.

PHP options

--enable-maintainer-mode

Enable make rules and dependencies not useful (and sometimes confusing) to the casual installer.

--with-config-file-path=PATH

Sets the path in which to look for php.ini, defaults to PREFIX/lib.

--disable-short-tags

Disable the short-form <? start tag by default.

--with-libdir

Specifies the directory where the libraries to build PHP exist on a Unix system. For 64bit systems, its needed to specify this argument to the lib64 directory like: --with-libdir=lib64.

--enable-zts

Enables thread safety. Prior to PHP 8.0.0 on non-Windows systems, the option was called --enable-maintainer-zts.

SAPI options

The following list contains the available SAPI&s (Server Application Programming Interface) for PHP.

--with-apxs[=FILE]

Build shared Apache module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs. Make sure you specify the version of apxs that is actually installed on your system and NOT the one that is in the apache source tarball.

--with-apache[=DIR]

Build a static Apache module. DIR is the top-level Apache build directory, defaults to /usr/local/apache.

--with-mod_charset

Enable transfer tables for mod_charset (Russian Apache).

--with-apxs2[=FILE]

Build shared Apache 2.0 module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs.

--disable-cli

Disable building the CLI version of PHP (this forces --without-pear). More information is available in the section about Using PHP from the command line.

--enable-phpdbg

Enable phpdbg interactive debugger SAPI module support.

--enable-embed[=TYPE]

Enable building of the embedded SAPI library. TYPE is either shared or static, which defaults to shared.

--with-servlet[=DIR]

Include servlet support. DIR is the base install directory for the JSDK. This SAPI requires the java extension must be built as a shared dl.

--disable-cgi

Disable building CGI version of PHP.

This argument also enables FastCGI.

Директивы php.ini: карта конфигурации

Директива php.ini действует в определённом SAPI и имеет режим изменяемости. Перед правкой выясняют загруженный файл, дополнительные ini, допустимое место изменения и единицы значения; затем перезапускают или перечитывают нужный процесс и проверяют результат в том же окружении.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

Директивы ядра php.ini

Директива php.ini действует в определённом SAPI и имеет режим изменяемости. Перед правкой выясняют загруженный файл, дополнительные ini, допустимое место изменения и единицы значения; затем перезапускают или перечитывают нужный процесс и проверяют результат в том же окружении.

Полный официальный договор страницы — большой справочник, раскрывается по запросу

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Список включает встроенные директивы файла php.ini, которыми настраивают PHP. Директивы, которые обрабатываются модулями, перечисляют и подробно описывают страницы документации модулей. Например, информацию о директивах сессий даёт страница документации сессий.

Замечание:

PHP работает со значениями по умолчанию, только если не подключили файл php.ini; значения файла php.ini для производственной среды и для разработки часто различаются.

Языковые опции

Опции языка и прочих настроек
ИмяПо умолчаниюМесто измененияСписок изменений
short_open_tag"1"INI_PERDIR
precision"14"INI_ALL
serialize_precision"-1"INI_ALL До версии PHP 7.1.0 значение по умолчанию равнялось 17.
disable_functions""Только INI_SYSTEM
disable_classes""Только php.iniВ PHP 8.5.0 директиву удалили.
exit_on_timeout""INI_ALL
expose_php"1"Только php.ini
hard_timeout"2"INI_SYSTEMОпция доступна с PHP 7.1.0.
zend.exception_ignore_args"0"INI_ALLОпция доступна с PHP 7.4.0
zend.multibyte"0"INI_ALL
zend.script_encodingNULLINI_ALL
zend.detect_unicodeNULLINI_ALL
zend.signal_check"0"INI_SYSTEM
zend.assertions"1"INI_ALL с ограничениями
zend.exception_string_param_max_len"15"INI_ALLОпция доступна с PHP 8.0.0.

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

short_open_tagbool

Опция включает или отключает короткую форму записи открывающего PHP-тега: <? ?>. Опцию отключают при встраивании XML-разметки в PHP-скрипт, чтобы синтаксический анализатор не интерпретировал первые два символа XML-декларации <?xml ?> как короткий PHP-тег. При включённой директиве XML-декларацию выводят средствами PHP, например: <?php echo '<?xml version="1.0"?>'; ?>. При отключении опции в режим разбора PHP-кода переключаются длинной формой открывающего PHP-тега: <?php ?>.

Замечание:

Директива не влияет на сокращённую запись <?=, которая доступна как часть синтаксиса языка.

precisionint

Количество значащих цифр, отображаемых для чисел с плавающей точкой. Значение -1 включает усовершенствованный алгоритм для округления таких чисел.

serialize_precisionint

Количество сохраняемых значащих цифр при сериализации чисел с плавающей точкой. Значение -1 включает усовершенствованный алгоритм для округления таких чисел.

expose_phpbool

Опция сообщает о работе PHP на сервере, включая передачу версии PHP в HTTP-заголовке наподобие X-Powered-By: PHP/5.3.7.

disable_functionsstring

Директива отключает отдельные функции. Опция принимает разделённый запятыми список названий функций. Начиная с PHP 8.0.0 отключение функции удаляет определение функции и разрешает переопределить функцию в пользовательском коде. До PHP 8.0.0 отключение функции только предотвращало вызов функции.

Директива отключает только внутренние функции. Функция не затрагивает пользовательские функции.

Директиву устанавливают только в файле php.ini. Опцию нельзя устанавливать в файле httpd.conf.

Внимание

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

disable_classesstring

Директива отключает отдельные классы. Опция принимает разделённый запятыми список названий классов. Отключение класса только запрещает создавать экземпляр класса.

Директива отключает только внутренние классы. Опция не затрагивает пользовательские классы.

Директиву устанавливают только в файле php.ini. Опцию нельзя устанавливать в файле httpd.conf.

Внимание

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

Внимание

Функциональность УДАЛЕНА в PHP 8.5.0.

zend.assertionsint

Со значением 1 проверочный код будет исполняться (режим разработки). При значении 0 PHP сгенерирует код проверок, однако, исполнять не будет. Со значением -1, проверочный код не будет генерироваться (продуктивный режим).

Замечание:

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

При запуске процесса в режиме разработки для директивы zend.assertions нельзя будет установить значение -1 во время выполнения.

zend.exception_string_param_max_lenint

Максимальная длина аргументов строковой функции в строковых трассировках стека. Опиция принимает значение в диапазоне от "0" до "1000000".

hard_timeoutint

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

После истечения жёсткого времени ожидания и остановки PHP возникает ошибка наподобие:

        Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_argsbool

Исключает аргументы из трассировки стека, которая генерируется при исключениях.

zend.multibytebool

Директива разрешает разбор файлов с исходным кодом в многобайтовых кодировках. Опцию zend.multibyte включают для правильной интерпретации многобайтовых строковых данных в кодировках символов наподобие SJIS, BIG5. Для файлов в кодировках UTF-8, EUC и других совместимых с ISO-8859-1 кодировках активация опции не требуется.

Режим разбора, который активируется директивой zend.multibyte, работает только при доступности модуля mbstring.

zend.script_encodingstring

PHP применяет значение только при отсутствии директивы declare(encoding=...) в начале скрипта. В кодировках, которые несовместимы с кодировкой ISO-8859-1, требуется включить и опцию zend.multibyte, и опцию zend.script_encoding.

Литеральные строки транслитерируются из кодировки директивы zend.script_encoding в кодировку директивы mbstring.internal_encoding, как если бы вызвали функцию mb_convert_encoding().

zend.detect_unicodebool

Определяет, проверять ли BOM (Byte Order Mark, метка порядка байтов) и корректность многобайтных символов в файле. Эта проверка производится до вызова __halt_compiler(). Доступна только в режиме Zend Multibyte.

zend.signal_checkbool

Определяет, проверять ли заменённые обработчики сигналов при завершении скрипта.

exit_on_timeoutbool

Директива работает только с модулем mod_php веб-сервера Apache1 и заставляет дочерний процесс Apache завершить работу при истечении времени ожидания выполнения PHP-скрипта. Превышение времени ожидания приводит к внутреннему вызову longjmp() в Apache1, который оставляет отдельные модули в несогласованном состоянии. По завершении процесса все неснятые блокировки или память очистятся.

Ограничения ресурсов

Ограничения ресурсов
ИмяПо умолчаниюМесто измененияСписок изменений
memory_limit"128M"INI_ALL

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

memory_limitint

Директива задаёт предельный объем памяти в байтах, который разрешается выделять для работы скрипта. Ограничение исключает исчерпание доступной серверу памяти при ошибках в скрипте или попытках обработать данные за пределами ограничения. Значение -1 отключает ограничение памяти.

Объём измеряется в байтах, если значение параметра указали как целое число (int). Параметр также принимает значения в сокращённой нотации, которую описывает раздел FAQ.

Смотрите также описание директивы: max_execution_time.

Настройка производительности

Настройка производительности
ИмяПо умолчаниюМесто измененияСписок изменений
realpath_cache_size"4M"INI_SYSTEMДо PHP 7.0.16 и 7.1.2 значение по умолчанию равнялось "16K"
realpath_cache_ttl"120"INI_SYSTEM

Замечание:

Директива open_basedirотключит кеш realpath.

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

realpath_cache_sizeint

Директива определяет размера кеша realpath, который будет использовать PHP. Это значение требуется увеличить в системах, в которых PHP открывает много файлов, чтобы отразить количество файловых операций, которые выполнил PHP.

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

Размер, который требуется для кеширования, зависит от системы.

realpath_cache_ttlint

Время в секундах, в течение которого PHP обращается в realpath-кеш для файла или каталога. Для систем, в которых файлы изменяются редко, значение увеличивают.

Обработка данных

Конфигурационные опции обработки данных
ИмяПо умолчаниюМесто измененияСписок изменений
arg_separator.output"&"INI_ALL
arg_separator.input"&"INI_PERDIR
variables_order"EGPCS"INI_PERDIR
request_order""INI_PERDIR
auto_globals_jit"1"INI_PERDIR
register_argc_argv"1"INI_PERDIRС PHP 8.5.0 директива устарела.
enable_post_data_reading"1"INI_PERDIR
post_max_size"8M"INI_PERDIR
auto_prepend_fileNULLINI_PERDIR
auto_append_fileNULLINI_PERDIR
default_mimetype"text/html"INI_ALL
default_charset"UTF-8"INI_ALL
input_encoding""INI_ALL
output_encoding""INI_ALL
internal_encoding""INI_ALL

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

arg_separator.outputstring

Разделитель аргументов в URL-адресах, которые генерирует PHP.

arg_separator.inputstring

Список разделителей, которые PHP применяет при разборе входных URL-адресов на переменные.

Замечание:

Каждый символ в директиве интерпретируется как разделитель!

variables_orderstring

Устанавливает порядок обработки переменных EGPCS (Environment, Get, Post, Cookie, и Server). Например, если variables_order установлена в "SP", то PHP создаст superglobals$_SERVER и $_POST, но не будет создавать $_ENV, $_GET и $_COOKIE. Установка в "" означает, что ни одна superglobals не будет установлена.

Внимание

В CGI и FastCGI SAPI, в $_SERVER также добавляются значения переменных окружения; S всегда эквивалентна ES вне зависимости от самого положения E в этой директиве.

Замечание:

Эта директива также влияет на содержимое и порядок переменной $_REQUEST.

request_orderstring

Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.

Если значение этой директивы не установлено, то используется значение директивы variables_order для содержимого переменной $_REQUEST.

Учтите, что файлы php.ini, поставляемые с дистрибутивом, по соображениям безопасности не содержат значение 'C' (cookies).

auto_globals_jitbool

Когда включено, переменные SERVER, REQUEST и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведёт к росту производительности.

Внимание

Использование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.

register_argc_argvbool

Сообщает PHP, объявлять ли переменные argv и argc, которые заполняются GET-информацией.

Смотрите также раздел «Работа с PHP из командной строки».

Внимание

Начиная с PHP 8.5.0 функциональность УСТАРЕЛА. Полагаться на функциональность настоятельно не рекомендуют.

Замечание:

Поведение, при котором PHP заполняет элементы $_SERVER['argc'] и $_SERVER['argv'] из аргументов через серверный SAPI, а не в режиме CLI, устарело. Для доступа к информации лучше установить директиву register_argc_argv=0 и переключиться на считывание аргументов либо из суперглобального массива $_GET, либо из элемента $_SERVER['QUERY_STRING'], но предварительно проверить безопасность перехода с аргументов на суперглобальные переменные.

enable_post_data_readingbool

При отключении опции суперглобальные массивы $_POST и $_FILESне заполняются. Сырое тело запроса остаётся в потоке php://input, откуда данные считывают вручную или разбирают функцией request_parse_body(). Отключение опции полезно для проксирования запросов или обработки POST-данных с минимумом нагрузки на память.

post_max_sizeint

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

В сущности, memory_limit должна быть больше чем post_max_size.

Объём измеряется в байтах, если значение параметра указали как целое число (int). Параметр также принимает значения в сокращённой нотации, которую описывает раздел FAQ.

Если размер POST-данных больше значения директивы post_max_size, суперглобальные переменные$_POST и $_FILES будут пустыми. Это проверяют разными способами, например, передав переменную $_GET в скрипт, который обрабатывает данные, т. е. <form action="edit.php?processed=1">, а затем проверить, установлена ли переменная $_GET['processed'].

Замечание:

PHP разрешает сокращения значений байтов, включая K (кило), M (мега) и G (гига). PHP автоматически преобразовывает эти сокращения. Будьте осторожны с превышением диапазона 32-битных целых значений на 32-битной версии PHP, поскольку это приведёт к ошибке скрипта.

Список изменений post_max_size
ВерсияОписание
5.3.4 Установка post_max_size = 0 не снимет ограничение, если контент имеет тип application/x-www-form-urlencoded или не зарегистрирован в PHP.
5.3.2 , 5.2.12 Стало возможным снять ограничение на размер пост-запроса установкой post_max_size в 0.
auto_prepend_filestring

Определяет имя файла, который будет автоматически обрабатываться перед основным файлом. Файл вызывается так, будто он был подключён при помощи функции require, так что include_path также используется.

Специальное значение none отключает эту директиву.

auto_append_filestring

Определяет имя файла, который будет автоматически обрабатываться после основного файла. Файл вызывается так, будто он был подключён при помощи функции require, так что include_path тоже используется.

Специальное значение none отключает эту директиву.

Замечание:

Если скрипт завершает работу при помощи exit(), auto-append НЕ выполняется.

default_mimetypestring

По умолчанию PHP выводит название кодировки в заголовке Content-Type. Если передавать кодировку не требуется, просто оставьте эту опцию пустой.

"media type" по умолчанию установлен как "text/html".

default_charsetstring

"UTF-8" — значение по умолчанию и используется как кодировка по умолчанию для функций htmlentities(), html_entity_decode() и htmlspecialchars(), если параметр encoding не указали. Значение default_charset также используется для указания кодировки по умолчанию для функций iconv, если конфигурационные опции iconv.input_encoding, iconv.output_encoding и iconv.internal_encoding не установлены, и для функций mbstring, если не установлены mbstring.http_inputmbstring.http_outputmbstring.internal_encoding.

Все версии PHP используют это значение как кодировку для стандартного заголовка Content-Type, отправляемого PHP, если этот заголовок не переопределён вызовом функции header().

Не рекомендуется устанавливать default_charset в пустое значение.

input_encodingstring

Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто.

output_encodingstring

Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто.

internal_encodingstring

Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто. В это случае используется default_charset.

Пути и Директории

Конфигурационные Опции Путей и Директорий
ИмяПо умолчаниюМесто измененияСписок изменений
include_path".;/path/to/php/pear"INI_ALL
open_basedirNULLINI_ALL
doc_rootNULLINI_SYSTEM
user_dirNULLINI_SYSTEM
user_ini.cache_ttl"300"INI_SYSTEM
user_ini.filename".user.ini"INI_SYSTEM
extension_dir"/path/to/php"INI_SYSTEM
extensionNULLТолько php.ini
zend_extensionNULLТолько php.ini
cgi.check_shebang_line"1"INI_SYSTEM
cgi.discard_path"0"INI_SYSTEM
cgi.fix_pathinfo"1"INI_SYSTEM
cgi.force_redirect"1"INI_SYSTEM
cgi.nph"0"INI_SYSTEM
cgi.redirect_status_envNULLINI_SYSTEM
cgi.rfc2616_headers"0"INI_ALL
fastcgi.impersonate"0"INI_SYSTEM
fastcgi.logging"1"INI_SYSTEM

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

include_pathstring

Указывает список директорий, в которых функции require, include, fopen(), file(), readfile() и file_get_contents() ищут файлы. Формат соответствует формату системной переменной окружения PATH: список директорий, разделённых двоеточием в Unix или точкой с запятой в Windows.

При поиске подключаемых файлов PHP обрабатывает каждое значение директивы include_path отдельно. PHP проверяет первый путь и, если не находит файл, переходит к следующему, и так до обнаружения подключаемого файла или возврата ошибки уровня E_WARNING или E_ERROR. Значение директивы include_path во время выполнения скрипта изменяют функцией set_include_path().

Пример #1 include_path в Unix

include_path=".:/php/includes"

Пример #2 include_path в Windows

include_path=".;c:\php\includes"

Использование . в include_path позволяет задавать относительные пути для подключения файлов, так как точка означает текущую директорию. Однако, более эффективно использовать include './file', чем заставлять PHP каждый раз проверять текущую директорию при подключении каждого файла.

Замечание:

Переменные окружения (ENV) также доступны в .ini файлах. Таким образом, можно ссылаться на домашнюю директорию с помощью директив ${LOGIN} и ${USER}.

Переменные окружения могут отличаться между различными серверными API, так как сами эти окружения отличаются друг от друга.

Пример #3 Настройка include_path с помощью переменной окружения ${USER} в Unix

include_path = ".:${USER}/pear/php"
open_basedirstring

Ограничивает для PHP доступ к файлам деревом каталогов, включая сам файл.

Когда скрипт пытается получить доступ к файловой системе, например через выражение include или функцию fopen(), PHP проверяет расположение файла. PHP откажется получать доступ к файлу, когда файл лежит за пределами дерева каталогов. PHP разрешит каждую символическую ссылку, поэтому невозможно обойти ограничение через символическую ссылку. Символическая ссылка не разрешится, если файл не существует, а PHP будет сравнивать имя файла с разрешённым путём open_basedir.

Опция open_basedir влияет не только на функции для работы с файловой системой; например, если СУБД MySQL настроили на работу с драйвером mysqlnd, директива open_basedir будет влиять на работу инструкции LOAD DATA INFILE. Большая часть расширенной функциональности PHP пользуется директивой open_basedir таким способом.

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

В файле httpd.conf директиву open_basedir можно отключить (например, для отдельных виртуальных хостов) как и другие конфигурационные директивы: "php_admin_value open_basedir none".

В системах под управлением ОС Windows каталоги разделяют точкой с запятой. В остальных системах директории разделяют двоеточием. Когда PHP работает как модуль веб-сервера Apache, пути директивы open_basedir из родительских каталогов теперь автоматически наследуются.

Ограничение, которое устанавливает директива open_basedir, — имя каталога, а не префикс.

По умолчанию разрешается открывать все файлы.

Замечание:

Значение директивы open_basedir можно сузить во время выполнения скрипта. Это означает, что если в файле php.ini для директивы open_basedir установили значение /www/, скрипт может сузить конфигурацию директивы до каталога /www/tmp/ через функцию ini_set(). При перечислении ряда каталогов константу PATH_SEPARATOR указывают как разделитель путей, который не зависит от операционной системы.

Начиная с PHP 8.3.0 директива open_basedir больше не принимает пути, в которых содержится родительский каталог .., когда значение устанавливают во время выполнения функцией ini_set().

Замечание:

Директива open_basedir установит для директивы realpath_cache_size значение 0, которое отключит realpath-кеш.

Предостережение

Опция конфигурации open_basedir — просто дополнительная подстраховка, которая не претендует всесторонность, и поэтому на директиву нельзя полагаться, когда дело касается безопасности.

doc_rootstring

«Корневая директория» PHP на текущем сервере. Учитывается только непустое значение директивы. Если PHP не был скомпилирован с FORCE_REDIRECT, вам следует установить doc_root, если вы используете PHP в качестве CGI под любым веб-сервером (кроме IIS). Альтернативой является использование конфигурационной директивы cgi.force_redirect, речь о которой идёт ниже.

user_ini.cache_ttlint

user_ini.filenamestring

user_dirstring

Базовое имя директории, используемой в домашнем каталоге пользователя для PHP файлов, например, public_html.

extension_dirstring

В какой директории PHP должен искать динамически загружаемые модули. Рекомендуется указывать абсолютный путь. Смотрите также: enable_dl и dl().

extensionstring

Какие динамически загружаемые модули должны быть загружены при старте PHP.

zend_extensionstring

Имя динамически загружаемого модуля Zend (например, XDebug), который должен быть загружен при старте PHP.

cgi.check_shebang_linebool

Контролирует, нужно ли проверять первую строку CGI PHP-скрипта на содержание #! (shebang). Эта строка может быть необходима, если скрипт должен поддерживать как отдельный запуск, так и с помощью PHP CGI. PHP в режиме CGI пропускает эту строку и игнорирует её содержимое, если данная директива включена.

cgi.discard_pathbool

Если разрешено, бинарный файл PHP CGI может безопасно располагаться вне веб-дерева и люди не смогут обойти безопасность .htaccess.

cgi.fix_pathinfobool

Обеспечивает поддержку правильныхPATH_INFO/PATH_TRANSLATED в CGI. Раньше PHP просто устанавливал PATH_TRANSLATED в SCRIPT_FILENAME и не обращал внимания на PATH_INFO. Для получения дополнительной информации о PATH_INFO, обратитесь к спецификации CGI. Установка этого значения в 1 заставит PHP CGI исправлять свой путь в соответствии со спецификацией. Значение 0 соответствует предыдущему поведению. По умолчанию опция включена. Вы должны исправить свои скрипты так, чтобы они использовали SCRIPT_FILENAME вместо PATH_TRANSLATED.

cgi.force_redirectbool

Директива cgi.force_redirect поддерживает безопасность при запуске PHP в режиме CGI на большей части веб-серверов. PHP по умолчанию включает механизм проверки источника запроса и пропускает только запросы от веб-сервера, если значение директивы не определили. Директиву отключают на свой страх и риск.

Замечание:

Пользователям Windows: При запуске PHP на веб-сервере IIS опцию обязательно отключают. Предупреждение также относится к веб-серверам OmniHTTPD и Xitami.

cgi.nphbool

При включении директивы cgi.nph PHP в режиме CGI принудительно возвращает заголовок Status: 200 на каждый запрос.

cgi.redirect_status_envstring

При включённой директиве cgi.force_redirect и запуске интерпретатора вне веб-сервера Apache или веб-сервера iPlanet компании Netscape иногда требуется установка переменной окружения, название которой PHP проверяет, прежде чем продолжить обработку запроса и начать выполнение скрипта.

Замечание:

Неправильная настройка переменной ослабляет защиту сервера, поэтому вначале изучают влияние директивы на безопасность, а затем определяют переменную.

cgi.rfc2616_headersbool

Директива сообщает PHP, какой тип заголовков отправлять с HTTP-кодом ответа. При отключённой директиве PHP отправляет заголовок по стандарту » RFC 3875 — "Status:", который поддерживается Apache и другими веб-серверами. При включённой директиве PHP отправит заголовки, которые соответствуют стандарту » RFC 2616.

При включённой директиве и работе PHP в CGI-окружении наподобие PHP-FPM вместо HTTP-заголовков ответа в стиле стандарта RFC 2616 потребуется использовать эквивалент этих заголовков из стандарта RFC 3875, например, вместо header("HTTP/1.0 404 Not found"); потребуется указать header("Status: 404 Not Found");

Опцию включают, только если знают о последствиях.

fastcgi.impersonatebool

Режим FastCGI на веб-серверах IIS под управлением ОС Windows NT поддерживает механизм имперсонации, при котором процесс вместе с клиентским токеном безопасности получает привилегии клиента, от имени которого поступил запрос. Механизм помогает веб-серверу IIS определять контекст безопасности, в котором выполняется запрос. На 17 марта 2002 модуль mod_fastcgi для веб-сервера Apache не поддерживает имперсонацию. Директиву включают при запуске PHP на веб-сервере IIS. По умолчанию опция отключена.

fastcgi.loggingbool

Включает логирование SAPI при запуске PHP в режиме FastCGI. Логирование включено по умолчанию.

Закачивание Файлов

Конфигурационные Опции Закачивания Файлов
ИмяПо умолчаниюМесто измененияСписок изменений
file_uploads"1"INI_SYSTEM
upload_tmp_dirNULLINI_SYSTEM
max_input_nesting_level64INI_PERDIR
max_input_vars1000INI_PERDIR
upload_max_filesize"2M"INI_PERDIR
max_file_uploads20INI_PERDIR

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

file_uploadsbool

Разрешать или не разрешать закачивание файлов. Смотрите также директивы upload_max_filesize, upload_tmp_dir и post_max_size.

upload_tmp_dirstring

Каталог для временного хранения файлов при загрузке. Файлы загрузятся, только если каталог доступен для записи пользователю, от имени которого запустили PHP-процесс. PHP загрузит файлы в стандартный системный каталог для временных файлов, если значение директивы не указали.

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

upload_max_filesizeint

Максимальный размер закачиваемого файла.

Значение директивы post_max_size указывают больше значения этой директивы.

Объём измеряется в байтах, если значение параметра указали как целое число (int). Параметр также принимает значения в сокращённой нотации, которую описывает раздел FAQ.

max_file_uploadsint

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

Общий SQL

Конфигурационные Опции Общего SQL
ИмяПо умолчаниюМесто измененияСписок изменений
sql.safe_mode"0"INI_SYSTEMУдалён в PHP 7.2.0

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

sql.safe_modebool

При включённой опции функции подключения к базе данных, через которые указывают значения по умолчанию, игнорируют пользовательские аргументы и устанавливают значения из директивы. Подробнее о значениях по умолчанию рассказывает документация к функциям подключения конкретной базы данных.

Внимание

В PHP 7.2.0 опцию УДАЛИЛИ.

Особые настройки для ОС Windows

Особые опции конфигурации для ОС Windows
ИмяПо умолчаниюМесто измененияСписок изменений
windows.show_crt_warning"0"INI_ALL

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

windows.show_crt_warningbool

При включении директивы выводятся предупреждения библиотеки C Runtime для ОС Windows.

Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

This list includes the core php.ini directives you can set to configure your PHP setup. Directives handled by extensions are listed and detailed at the extension documentation pages respectively; Information on the session directives for example can be found at the sessions page.

Note:

The defaults listed here are used when php.ini is not loaded; the values for the production and development php.ini may vary.

Language Options

Language and Misc Configuration Options
NameDefaultChangeableChangelog
short_open_tag"1"INI_PERDIR
precision"14"INI_ALL
serialize_precision"-1"INI_ALL Prior to PHP 7.1.0, the default value was 17.
disable_functions""INI_SYSTEM only
disable_classes""php.ini onlyRemoved as of PHP 8.5.0
exit_on_timeout""INI_ALL
expose_php"1"php.ini only
hard_timeout"2"INI_SYSTEMAvailable as of PHP 7.1.0.
zend.exception_ignore_args"0"INI_ALLAvailable as of PHP 7.4.0
zend.multibyte"0"INI_ALL
zend.script_encodingNULLINI_ALL
zend.detect_unicodeNULLINI_ALL
zend.signal_check"0"INI_SYSTEM
zend.assertions"1"INI_ALL with restrictions
zend.exception_string_param_max_len"15"INI_ALLAvailable as of PHP 8.0.0.

Here's a short explanation of the configuration directives.

short_open_tagbool

Tells PHP whether the short form (<? ?>) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"?>'; ?>. Also, if disabled, you must use the long form of the PHP open tag (<?php ?>).

Note:

This directive does not affect the shorthand <?=, which is always available.

precisionint

The number of significant digits displayed in floating point numbers. -1 means that an enhanced algorithm for rounding such numbers will be used.

serialize_precisionint

The number of significant digits stored while serializing floating point numbers. -1 means that an enhanced algorithm for rounding such numbers will be used.

expose_phpbool

Exposes to the world that PHP is installed on the server, which includes the PHP version within the HTTP header (e.g., X-Powered-By: PHP/5.3.7).

disable_functionsstring

This directive allows certain functions to be disabled. It takes a comma-delimited list of function names. As of PHP 8.0.0, disabling a function removes its definition, allowing userland to redefine it. Prior to PHP 8.0.0, disabling a function just prevented the function from being invoked.

Only internal functions can be disabled using this directive. User-defined functions are unaffected.

This directive must be set in php.ini. It cannot be set in httpd.conf.

Warning

This directive can be circumvented and should not be considered a sufficient security measure for shared hosting environments.

disable_classesstring

This directive allows certain classes to be disabled. It takes a comma-delimited list of class names. Disabling a class just prevents the class's instantiation.

Only internal classes can be disabled using this directive. User-defined classes are unaffected.

This directive must be set in php.ini. It cannot be set in httpd.conf.

Warning

This directive can be circumvented and should not be considered a sufficient security measure for shared hosting environments.

Warning

This feature has been REMOVED as of PHP 8.5.0.

zend.assertionsint

When set to 1, assertion code will be generated and executed (development mode). When set to 0, assertion code will be generated but it will be skipped (not executed) at runtime. When set to -1, assertion code will not be generated, making the assertions zero-cost (production mode).

Note:

If a process is started in production mode, zend.assertions cannot be changed at runtime, since the code for assertions was not generated.

If a process is started in development mode, zend.assertions cannot be set to -1 at runtime.

zend.exception_string_param_max_lenint

The maximum length of string function arguments in stringified stack traces. Must range between "0" and "1000000".

hard_timeoutint

When the timeout set in max_execution_time has been hit, the PHP runtime will tear down resources gracefully. If something gets stuck while this happens, the hard timeout will tick for the set amount of seconds. When the hard timeout is hit, PHP will exit ungracefully. When set to 0, the hard timeout will never activate.

When PHP stops from a hard timeout, it will look something like this:

Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_argsbool

Excludes arguments from stack traces generated from exceptions.

zend.multibytebool

Enables parsing of source files in multibyte encodings. Enabling zend.multibyte is required to use character encodings like SJIS, BIG5, etc that contain special characters in multibyte string data. ISO-8859-1 compatible encodings like UTF-8, EUC, etc do not require this option.

Enabling zend.multibyte requires the mbstring extension to be available.

zend.script_encodingstring

This value will be used unless a declare(encoding=...) directive appears at the top of the script. When ISO-8859-1 incompatible encoding is used, both zend.multibyte and zend.script_encoding must be used.

Literal strings will be transliterated from zend.script_encoding to mbstring.internal_encoding, as if mb_convert_encoding() would have been called.

zend.detect_unicodebool

Check for BOM (Byte Order Mark) and see if the file contains valid multibyte characters. This detection is performed before processing of __halt_compiler(). Available only in Zend Multibyte mode.

zend.signal_checkbool

To check for replaced signal handlers on shutdown.

exit_on_timeoutbool

This is an Apache1 mod_php-only directive that forces an Apache child to exit if a PHP execution timeout occurred. Such a timeout causes an internal longjmp() call in Apache1 which can leave some extensions in an inconsistent state. By terminating the process any outstanding locks or memory will be cleaned up.

Resource Limits

Resource Limits
NameDefaultChangeableChangelog
memory_limit"128M"INI_ALL
max_memory_limit"-1"INI_SYSTEMAvailable as of PHP 8.5.0

Here's a short explanation of the configuration directives.

memory_limitint

This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1.

When an int is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used.

max_memory_limitint

Available as of PHP 8.5.0. This startup-only setting controls the maximum value that memory_limit may be configured to, either at startup or at runtime (e.g. via ini_set()). Setting memory_limit to a value exceeding max_memory_limit results in a warning and the value being capped. Set to -1 (the default) to impose no upper bound.

When an int is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used.

See also: max_execution_time.

Performance Tuning

Performance Tuning
NameDefaultChangeableChangelog
realpath_cache_size"4M"INI_SYSTEMPrior to PHP 7.0.16 and 7.1.2, the default was "16K"
realpath_cache_ttl"120"INI_SYSTEM

Note:

Using open_basedir will disable the realpath cache.

Here's a short explanation of the configuration directives.

realpath_cache_sizeint

Determines the size of the realpath cache to be used by PHP. This value should be increased on systems where PHP opens many files, to reflect the quantity of the file operations performed.

The size represents the total number of bytes in the path strings stored, plus the size of the data associated with the cache entry. This means that in order to store longer paths in the cache, the cache size must be larger. This value does not directly control the number of distinct paths that can be cached.

The size required for the cache entry data is system dependent.

realpath_cache_ttlint

Duration of time (in seconds) for which to cache realpath information for a given file or directory. For systems with rarely changing files, consider increasing the value.

Data Handling

Data Handling Configuration Options
NameDefaultChangeableChangelog
arg_separator.output"&"INI_ALL
arg_separator.input"&"INI_PERDIR
variables_order"EGPCS"INI_PERDIR
request_order""INI_PERDIR
auto_globals_jit"1"INI_PERDIR
register_argc_argv"1"INI_PERDIRDeprecated as of PHP 8.5.0
enable_post_data_reading"1"INI_PERDIR
post_max_size"8M"INI_PERDIR
auto_prepend_fileNULLINI_PERDIR
auto_append_fileNULLINI_PERDIR
default_mimetype"text/html"INI_ALL
default_charset"UTF-8"INI_ALL
input_encoding""INI_ALL
output_encoding""INI_ALL
internal_encoding""INI_ALL

Here's a short explanation of the configuration directives.

arg_separator.outputstring

The separator used in PHP generated URLs to separate arguments.

arg_separator.inputstring

List of separator(s) used by PHP to parse input URLs into variables.

Note:

Every character in this directive is considered as separator!

variables_orderstring

Sets the order of the EGPCS (Environment, Get, Post, Cookie, and Server) variable parsing. For example, if variables_order is set to "SP" then PHP will create the superglobals$_SERVER and $_POST, but not create $_ENV, $_GET, and $_COOKIE. Setting to "" means no superglobals will be set.

Warning

In both the CGI and FastCGI SAPIs, $_SERVER is also populated by values from the environment; S is always equivalent to ES regardless of the placement of E elsewhere in this directive.

Note:

The content and order of $_REQUEST is also affected by this directive.

request_orderstring

This directive describes the order in which PHP registers GET, POST and Cookie variables into the _REQUEST array. Registration is done from left to right, newer values override older values.

If this directive is not set, variables_order is used for $_REQUEST contents.

Note that the default distribution php.ini files does not contain the 'C' for cookies, due to security concerns.

auto_globals_jitbool

When enabled, the SERVER, REQUEST, and ENV variables are created when they're first used (Just In Time) instead of when the script starts. If these variables are not used within a script, having this directive on will result in a performance gain.

Warning

Usage of SERVER, REQUEST, and ENV variables is checked during the compile time so using them through e.g. variable variables will not cause their initialization.

register_argc_argvbool

Tells PHP whether to declare the argv & argc variables (that would contain the GET information).

See also command line.

Warning

This feature has been DEPRECATED as of PHP 8.5.0. Relying on this feature is highly discouraged.

Note:

Deriving $_SERVER['argc'] and $_SERVER['argv'] from the query string for non-CLI SAPIs has been deprecated. Configure register_argc_argv=0 and switch to either $_GET or $_SERVER['QUERY_STRING'] to access the information, after verifying that the usage is safe.

enable_post_data_readingbool

Disabling this option causes $_POST and $_FILESnot to be populated. The request body remains unconsumed in php://input and can be read manually or parsed via request_parse_body(). This can be useful to proxy requests or to process the POST data in a memory efficient fashion.

post_max_sizeint

Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize.

Generally speaking, memory_limit should be larger than post_max_size.

When an int is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used.

If the size of post data is greater than post_max_size, the $_POST and $_FILESsuperglobals are empty. This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set.

Note:

PHP allows shortcuts for byte values, including K (kilo), M (mega) and G (giga). PHP will do the conversions automatically if you use any of these. Be careful not to exceed the 32 bit signed integer limit (if you're using 32bit versions) as it will cause your script to fail.

Changelog for post_max_size
VersionDescription
5.3.4post_max_size = 0 will not disable the limit when the content type is application/x-www-form-urlencoded or is not registered with PHP.
5.3.2 , 5.2.12 Allow unlimited post size by setting post_max_size to 0.
auto_prepend_filestring

Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require function, so include_path is used.

The special value none disables auto-prepending.

auto_append_filestring

Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the require function, so include_path is used.

The special value none disables auto-appending.

Note:

If the script is terminated with exit(), auto-append will not occur.

default_mimetypestring

By default, PHP will output a media type using the Content-Type header. To disable this, simply set it to be empty.

PHP's built-in default media type is set to text/html.

default_charsetstring

"UTF-8" is the default value and its value is used as the default character encoding for htmlentities(), html_entity_decode() and htmlspecialchars() if the encoding parameter is omitted. The value of default_charset will also be used to set the default character set for iconv functions if the iconv.input_encoding, iconv.output_encoding and iconv.internal_encoding configuration options are unset, and for mbstring functions if the mbstring.http_inputmbstring.http_outputmbstring.internal_encoding configuration option is unset.

All versions of PHP will use this value as the charset within the default Content-Type header sent by PHP if the header isn't overridden by a call to header().

Setting default_charset to an empty value is not recommended.

input_encodingstring

This setting is used for multibyte modules such as mbstring and iconv. Default is empty.

output_encodingstring

This setting is used for multibyte modules such as mbstring and iconv. Default is empty.

internal_encodingstring

This setting is used for multibyte modules such as mbstring and iconv. Default is empty. If empty, default_charset is used.

Paths and Directories

Paths and Directories Configuration Options
NameDefaultChangeableChangelog
include_path".;/path/to/php/pear"INI_ALL
open_basedirNULLINI_ALL
doc_rootNULLINI_SYSTEM
user_dirNULLINI_SYSTEM
user_ini.cache_ttl"300"INI_SYSTEM
user_ini.filename".user.ini"INI_SYSTEM
extension_dir"/path/to/php"INI_SYSTEM
extensionNULLphp.ini only
zend_extensionNULLphp.ini only
cgi.check_shebang_line"1"INI_SYSTEM
cgi.discard_path"0"INI_SYSTEM
cgi.fix_pathinfo"1"INI_SYSTEM
cgi.force_redirect"1"INI_SYSTEM
cgi.nph"0"INI_SYSTEM
cgi.redirect_status_envNULLINI_SYSTEM
cgi.rfc2616_headers"0"INI_ALL
fastcgi.impersonate"0"INI_SYSTEM
fastcgi.logging"1"INI_SYSTEM

Here's a short explanation of the configuration directives.

include_pathstring

Specifies a list of directories where the require, include, fopen(), file(), readfile() and file_get_contents() functions look for files. The format is like the system's PATH environment variable: a list of directories separated with a colon in Unix or semicolon in Windows.

PHP considers each entry in the include path separately when looking for files to include. It will check the first path, and if it doesn't find it, check the next path, until it either locates the included file or returns with an E_WARNING or an E_ERROR. You may modify or set your include path at runtime using set_include_path().

Example #1 Unix include_path

include_path=".:/php/includes"

Example #2 Windows include_path

include_path=".;c:\php\includes"

Using a . in the include path allows for relative includes as it means the current directory. However, it is more efficient to explicitly use include './file' than having PHP always check the current directory for every include.

Note:

ENV variables are also accessible in .ini files. As such it is possible to reference the home directory using ${LOGIN} and ${USER}.

Environment variables may vary between Server APIs as those environments may be different.

Example #3 Unix include_path using ${USER} env variable

include_path = ".:${USER}/pear/php"
open_basedirstring

Limit the files that can be accessed by PHP to the specified directory-tree, including the file itself.

When a script tries to access the filesystem, for example using include, or fopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to access it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink. If the file doesn't exist then the symlink couldn't be resolved and the filename is compared to (a resolved) open_basedir.

open_basedir can affect more than just filesystem functions; for example if MySQL is configured to use mysqlnd drivers, LOAD DATA INFILE will be affected by open_basedir. Much of the extended functionality of PHP uses open_basedir in this way.

The special value . indicates that the working directory of the script will be used as the base-directory. This is, however, a little dangerous as the working directory of the script can easily be changed with chdir().

In httpd.conf, open_basedir can be turned off (e.g. for some virtual hosts) the same way as any other configuration directive with "php_admin_value open_basedir none".

Under Windows, separate the directories with a semicolon. On all other systems, separate the directories with a colon. As an Apache module, open_basedir paths from parent directories are now automatically inherited.

The restriction specified with open_basedir is a directory name, not a prefix.

The default is to allow all files to be opened.

Note:

open_basedir can be tightened at run-time. This means that if open_basedir is set to /www/ in php.ini a script can tighten the configuration to /www/tmp/ at run-time with ini_set(). When listing several directories, you can use the PATH_SEPARATOR constant as a separator regardless of the operating system.

As of PHP 8.3.0, open_basedir no longer accepts a paths containing the parent directory (..) when set at runtime using ini_set().

Note:

Using open_basedir will set realpath_cache_size to 0 and thus disable the realpath cache.

Warning

open_basedir does not restrict access to Unix domain sockets. PHP socket functions such as stream_socket_client() and fsockopen() can connect to a Unix socket path (e.g. unix:///var/run/docker.sock) regardless of the open_basedir setting.

Caution

open_basedir is just an extra safety net, that is in no way comprehensive, and can therefore not be relied upon when security is needed.

doc_rootstring

PHP's "root directory" on the server. Only used if non-empty. If PHP was not compiled with FORCE_REDIRECT, you should set doc_root if you are running PHP as a CGI under any web server (other than IIS). The alternative is to use the cgi.force_redirect configuration below.

user_ini.cache_ttlint

user_ini.filenamestring

user_dirstring

The base name of the directory used on a user's home directory for PHP files, for example public_html .

extension_dirstring

In what directory PHP should look for dynamically loadable extensions. It is recommended to specify an absolute path. See also: enable_dl, and dl().

extensionstring

Which dynamically loadable extensions to load when PHP starts up.

zend_extensionstring

Name of dynamically loadable Zend extension (for example XDebug) to load when PHP starts up.

cgi.check_shebang_linebool

Controls whether CGI PHP checks for line starting with #! (shebang) at the top of the running script. This line might be needed if the script support running both as stand-alone script and via PHP CGI. PHP in CGI mode skips this line and ignores its content if this directive is turned on.

cgi.discard_pathbool

If this is enabled, the PHP CGI binary can safely be placed outside of the web tree and people will not be able to circumvent .htaccess security.

cgi.fix_pathinfobool

Provides realPATH_INFO/ PATH_TRANSLATED support for CGI. PHP's previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the CGI specs. Setting this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting of zero causes PHP to behave as before. It is turned on by default. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.

cgi.force_redirectbool

cgi.force_redirect is necessary to provide security running PHP as a CGI under most web servers. Left undefined, PHP turns this on by default. You can turn it off at your own risk.

Note:

Windows Users: When using IIS this option must be turned off. For OmniHTTPD or Xitami the same applies.

cgi.nphbool

If cgi.nph is enabled it will force cgi to always sent Status: 200 with every request.

cgi.redirect_status_envstring

If cgi.force_redirect is turned on, and you are not running under Apache or Netscape (iPlanet) web servers, you may need to set an environment variable name that PHP will look for to know it is OK to continue execution.

Note:

Setting this variable may cause security issues, know what you are doing first.

cgi.rfc2616_headersbool

Tells PHP what type of headers to use when sending HTTP response code. If it is disabled, PHP sends a » RFC 3875 "Status:" header that is supported by Apache and other web servers. When this option is enabled, PHP will send » RFC 2616 compliant headers.

If this option is enabled, and you are running PHP in a CGI environment (e.g. PHP-FPM) you should not use standard RFC 2616 style HTTP status response headers, you should instead use their RFC 3875 equivalent e.g. instead of header("HTTP/1.0 404 Not found"); you should use header("Status: 404 Not Found");

Leave it disabled unless you know what you're doing.

fastcgi.impersonatebool

FastCGI under IIS (on WINNT based OS) supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under. mod_fastcgi under Apache does not currently support this feature (03/17/2002). Enable if running under IIS. Default is disabled.

fastcgi.loggingbool

Turns on SAPI logging when using FastCGI. Default is to enable logging.

File Uploads

File Uploads Configuration Options
NameDefaultChangeableChangelog
file_uploads"1"INI_SYSTEM
upload_tmp_dirNULLINI_SYSTEM
max_input_nesting_level64INI_PERDIR
max_input_vars1000INI_PERDIR
upload_max_filesize"2M"INI_PERDIR
max_file_uploads20INI_PERDIR

Here's a short explanation of the configuration directives.

file_uploadsbool

Whether or not to allow HTTP file uploads. See also the upload_max_filesize, upload_tmp_dir, and post_max_size directives.

upload_tmp_dirstring

The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default.

If the directory specified here is not writable, PHP falls back to the system default temporary directory. If open_basedir is on, then the system default directory must be allowed for an upload to succeed.

upload_max_filesizeint

The maximum size of an uploaded file.

post_max_size must be larger than this value.

When an int is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used.

max_file_uploadsint

The maximum number of files allowed to be uploaded simultaneously. Upload fields left blank on submission do not count towards this limit.

General SQL

General SQL Configuration Options
NameDefaultChangeableChangelog
sql.safe_mode"0"INI_SYSTEMRemoved as of PHP 7.2.0

Here's a short explanation of the configuration directives.

sql.safe_modebool

If turned on, database connection functions that specify default values will use those values in place of any user-supplied arguments. For details on the default values, see the documentation for the relevant connection functions.

Warning

This feature has been REMOVED as of PHP 7.2.0.

Windows Specific

Windows Specific Configuration Options
NameDefaultChangeableChangelog
windows.show_crt_warning"0"INI_ALL

Here's a short explanation of the configuration directives.

windows.show_crt_warningbool

This directive shows the Windows CRT warnings when enabled.

PHP 8.2+: перевести размер из php.ini в байтыСамостоятельный пример
<?php
$bytes = ini_parse_quantity('2M');
echo $bytes, " bytes\n";
Ожидаемый результат
2097152 bytes

Буква M в конфигурации обозначает двоичный множитель. Перед сравнением лимитов учитывают специальные значения вроде -1 и проверяют документацию конкретной директивы.

Полный список директив php.ini

Директива php.ini действует в определённом SAPI и имеет режим изменяемости. Перед правкой выясняют загруженный файл, дополнительные ini, допустимое место изменения и единицы значения; затем перезапускают или перечитывают нужный процесс и проверяют результат в том же окружении.

Строка каталога состоит минимум из четырёх полей: имя директивы, значение по умолчанию, режим изменяемости и история. Имя копируют точно; default не означает рекомендуемое значение; режим показывает, где настройку разрешено менять; changelog предупреждает об изменении или удалении.

РежимГде можно менять
INI_SYSTEMТолько системная конфигурация: php.ini или конфигурация сервера.
INI_PERDIRphp.ini, серверная или разрешённая конфигурация каталога; не произвольный ini_set().
INI_USERПользовательская конфигурация и, если директива допускает, runtime.
INI_ALLДопускаются все перечисленные места, но конкретная функция всё равно может иметь дополнительные ограничения.
Полный официальный договор страницы — большой справочник, раскрывается по запросу

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

Список директив файла php.ini, через которые настраивают PHP.

Столбец «Место изменения» показывает, когда и где разрешено установливать директиву. Информация о значениях этих директив даёт раздел «Места установки параметров конфигурации».

Параметры конфигурации
ИмяПо умолчаниюМесто измененияСписок изменений
allow_url_fopen"1"INI_SYSTEM
allow_url_include"0"INI_SYSTEMС PHP 7.4.0 директива устарела.
arg_separator.input"&"INI_PERDIR
arg_separator.output"&"INI_ALL
assert.active"1"INI_ALL
assert.bail"0"INI_ALL
assert.callbacknullINI_ALL
assert.exception"0"INI_ALL
assert.quiet_eval"0"INI_ALLУдалено в PHP 8.0.0
assert.warning"1"INI_ALL
auto_append_filenullINI_PERDIR
auto_detect_line_endings"0"INI_ALL
auto_globals_jit"1"INI_PERDIR
auto_prepend_filenullINI_PERDIR
bcmath.scale"0"INI_ALL
browscapnullINI_SYSTEM
cgi.check_shebang_line"1"INI_SYSTEM
cgi.discard_path"0"INI_SYSTEM
cgi.fix_pathinfo"1"INI_SYSTEM
cgi.force_redirect"1"INI_SYSTEM
cgi.nph"0"INI_ALL
cgi.redirect_status_envnullINI_SYSTEM
cgi.rfc2616_headers"0"INI_ALL
child_terminate"0"INI_ALL
cli.pager""INI_ALL
cli.prompt"\\b \\> "INI_ALL
cli_server.color"0"INI_ALL
com.allow_dcom"0"INI_SYSTEM
com.autoregister_typelib"0"INI_ALL
com.autoregister_verbose"0"INI_ALL
com.autoregister_casesensitive"1"INI_ALL
com.code_page""INI_ALL
com.dotnet_version""INI_SYSTEMНачиная с PHP 8.0.0
com.typelib_file""INI_SYSTEM
curl.cainfoNULLINI_SYSTEM
date.default_latitude"31.7667"INI_ALL
date.default_longitude"35.2333"INI_ALL
date.sunrise_zenith"90.833333"INI_ALLДо PHP 8.0.0 значение по умолчанию было "90.583333".
date.sunset_zenith"90.833333"INI_ALLДо PHP 8.0.0 значение по умолчанию было "90.583333".
date.timezone"UTC"INI_ALLНачиная с PHP 8.2, при установке недопустимого значения или пустой строки выдаётся предупреждение.
dba.default_handlerDBA_DEFAULTINI_ALL
default_charset"UTF-8"INI_ALL
input_encoding""INI_ALL
output_encoding""INI_ALL
internal_encoding""INI_ALL
default_mimetype"text/html"INI_ALL
default_socket_timeout"60"INI_ALL
disable_classes""Только php.iniВ PHP 8.5.0 директиву удалили.
disable_functions""Только php.ini
display_errors"1"INI_ALL
display_startup_errors"1"INI_ALL До PHP 8.0.0 значение по умолчанию было "0".
docref_ext""INI_ALL
docref_root""INI_ALL
doc_rootnullINI_SYSTEM
enable_dl"1"INI_SYSTEM Функция устарела и ее удалят в будущем.
enable_post_data_reading"On"INI_PERDIR
engine"1"INI_ALL
error_append_stringnullINI_ALL
error_lognullINI_ALL
error_log_mode0o644INI_ALLДоступно с PHP 8.2.0
error_prepend_stringnullINI_ALL
error_reportingnullINI_ALL
exif.encode_unicode"ISO-8859-15"INI_ALL
exif.decode_unicode_motorola"UCS-2BE"INI_ALL
exif.decode_unicode_intel"UCS-2LE"INI_ALL
exif.encode_jis""INI_ALL
exif.decode_jis_motorola"JIS"INI_ALL
exif.decode_jis_intel"JIS"INI_ALL
exit_on_timeout""INI_ALL
expect.timeout"10"INI_ALL
expect.loguser"1"INI_ALL
expect.logfile""INI_ALL
expect.match_max""INI_ALL
expose_php"1"Только php.ini
extensionnullТолько php.ini
extension_dir"/path/to/php"INI_SYSTEM
fastcgi.impersonate"0"INI_SYSTEM
fastcgi.logging"1"INI_SYSTEM
file_uploads"1"INI_SYSTEM
filter.default"unsafe_raw"INI_PERDIRПараметр устарел, начиная с PHP 8.1.0.
filter.default_flagsNULLINI_PERDIR
from""INI_ALL
gd.jpeg_ignore_warning"1"INI_ALL
geoip.custom_directory""INI_ALL
hard_timeout"2"INI_SYSTEMДоступно с PHP 7.1.0.
highlight.comment"#FF8000"INI_ALL
highlight.default"#0000BB"INI_ALL
highlight.html"#000000"INI_ALL
highlight.keyword"#007700"INI_ALL
highlight.string"#DD0000"INI_ALL
html_errors"1"INI_ALL
ibase.allow_persistent"1"INI_SYSTEM
ibase.max_persistent"-1"INI_SYSTEM
ibase.max_links"-1"INI_SYSTEM
ibase.default_dbNULLINI_SYSTEM
ibase.default_userNULLINI_ALL
ibase.default_passwordNULLINI_ALL
ibase.default_charsetNULLINI_ALL
ibase.timestampformat"%Y-%m-%d %H:%M:%S"INI_ALL
ibase.dateformat"%Y-%m-%d"INI_ALL
ibase.timeformat"%H:%M:%S"INI_ALL
ibm_db2.binmode"1"INI_ALL
ibm_db2.i5_all_pconnect"0"INI_SYSTEMДоступно с ibm_db2 1.6.5.
ibm_db2.i5_allow_commit"0"INI_SYSTEMДоступно с ibm_db2 1.4.9.
ibm_db2.i5_blank_userid"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_char_trim"0"INI_SYSTEMДоступно с ibm_db2 2.1.0.
ibm_db2.i5_dbcs_alloc"0"INI_SYSTEMДоступно с ibm_db2 1.5.0.
ibm_db2.i5_guard_profile"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_ignore_userid"0"INI_SYSTEMДоступно с ibm_db2 1.8.0.
ibm_db2.i5_job_sort"0"INI_SYSTEMДоступно с ibm_db2 1.8.4.
ibm_db2.i5_log_verbose"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_max_pconnect"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_override_ccsid"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_servermode_subsystemNULLINI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.i5_sys_naming"0"INI_SYSTEMДоступно с ibm_db2 1.9.7.
ibm_db2.instance_nameNULLINI_SYSTEMДоступно с ibm_db2 1.0.2.
iconv.input_encoding""INI_ALLУстарело с PHP 5.6.0.
iconv.output_encoding""INI_ALLУстарело с PHP 5.6.0.
iconv.internal_encoding""INI_ALLУстарело с PHP 5.6.0.
ignore_repeated_errors"0"INI_ALL
ignore_repeated_source"0"INI_ALL
ignore_user_abort"0"INI_ALL
implicit_flush"0"INI_ALL
include_path".:/path/to/php/pear"INI_ALL
intl.default_localeINI_ALL
intl.error_level0INI_ALL
intl.use_exceptions0INI_ALLДоступно с PECL 3.0.0a1
last_modified"0"INI_ALL
ldap.max_links"-1"INI_SYSTEM
log_errors"0"INI_ALL
log_errors_max_len"1024"INI_ALL
mail.add_x_header"0"INI_PERDIR
mail.force_extra_parametersnullINI_SYSTEM
mail.log""INI_PERDIR
max_execution_time"30"INI_ALL
max_input_nesting_level"64"INI_PERDIR
max_input_vars1000INI_PERDIR
max_input_time"-1"INI_PERDIR
mbstring.language"neutral"INI_ALL
mbstring.detect_orderNULLINI_ALL
mbstring.http_input"pass"INI_ALLУстарела
mbstring.http_output"pass"INI_ALLУстарела
mbstring.internal_encodingNULLINI_ALLУстарела
mbstring.substitute_characterNULLINI_ALL
mbstring.func_overload"0"INI_SYSTEM Объявлено устаревшим в PHP 7.2.0; удалено с PHP 8.0.0.
mbstring.encoding_translation"0"INI_PERDIR
mbstring.http_output_conv_mimetypes"^(text/|application/xhtml\+xml)"INI_ALL
mbstring.strict_detection"0"INI_ALL
mbstring.regex_retry_limit"1000000"INI_ALLДоступно, начиная с PHP 7.4.0.
mbstring.regex_stack_limit"100000"INI_ALLДоступно, начиная с PHP 7.3.5.
mcrypt.algorithms_dirnullINI_ALL
mcrypt.modes_dirnullINI_ALL
memcache.allow_failover"1"INI_ALLДоступно с memcache 2.0.2.
memcache.max_failover_attempts"20"INI_ALLДоступно с memcache 2.1.0.
memcache.chunk_size"8192"INI_ALLДоступно с memcache 2.0.2.
memcache.default_port"11211"INI_ALLДоступно с memcache 2.0.2.
memcache.hash_strategy"standard"INI_ALLДоступно с memcache 2.2.0.
memcache.hash_function"crc32"INI_ALLДоступно с memcache 2.2.0.
memcache.protocolasciiINI_ALLПоддерживается с memcache 3.0.0
memcache.redundancy1INI_ALLПоддерживается с memcache 3.0.0
memcache.session_redundancy2INI_ALLПоддерживается с memcache 3.0.0
memcache.compress_threshold20000INI_ALLПоддерживается с memcache 3.0.3
memcache.lock_timeout15INI_ALLПоддерживается с memcache 3.0.4
memory_limit"128M"INI_ALL
mysql.allow_local_infile"1"INI_SYSTEM
mysql.allow_persistent"1"INI_SYSTEM
mysql.max_persistent"-1"INI_SYSTEM
mysql.max_links"-1"INI_SYSTEM
mysql.trace_mode"0"INI_ALL
mysql.default_portNULLINI_ALL
mysql.default_socketNULLINI_ALL
mysql.default_hostNULLINI_ALL
mysql.default_userNULLINI_ALL
mysql.default_passwordNULLINI_ALL
mysql.connect_timeout"60"INI_ALL
mysqli.allow_local_infile"0"INI_SYSTEMДо PHP 7.2.16 и 7.3.3 значение по умолчанию равнялось "1".
mysqli.local_infile_directoryINI_SYSTEMДоступно с PHP 8.1.0.
mysqli.allow_persistent"1"INI_SYSTEM
mysqli.max_persistent"-1"INI_SYSTEM
mysqli.max_links"-1"INI_SYSTEM
mysqli.default_port"3306"INI_ALL
mysqli.default_socketNULLINI_ALL
mysqli.default_hostNULLINI_ALL
mysqli.default_userNULLINI_ALL
mysqli.default_pwNULLINI_ALL
mysqli.reconnect"0"INI_SYSTEMОпцию удалили с PHP 8.2.0
mysqli.rollback_on_cached_plink"0"INI_SYSTEM
mysqlnd.collect_statistics"1"INI_SYSTEM
mysqlnd.collect_memory_statistics"0"INI_SYSTEM
mysqlnd.debug""INI_SYSTEM
mysqlnd.log_mask0INI_ALL
mysqlnd.mempool_default_size16000INI_ALL
mysqlnd.net_read_timeout"86400"INI_ALLДо PHP 7.2.0 значением по умолчанию "31536000", а местом изменения было INI_SYSTEM
mysqlnd.net_cmd_buffer_size5.3.0 — "2048", 5.3.1 — "4096"INI_SYSTEM
mysqlnd.net_read_buffer_size"32768"INI_SYSTEM
mysqlnd.sha256_server_public_key""INI_PERDIR
mysqlnd.trace_alloc""INI_SYSTEM
mysqlnd.fetch_data_copy0INI_ALLУдалено с PHP 8.1.0
oci8.connection_class""INI_ALL
oci8.default_prefetch"100"INI_SYSTEM
oci8.eventsOffINI_SYSTEM
oci8.max_persistent"-1"INI_SYSTEMОбъявлена устаревшей, начиная с PHP 8.1.0.
oci8.old_oci_close_semanticsOffINI_SYSTEM
oci8.persistent_timeout"-1"INI_SYSTEM
oci8.ping_interval"60"INI_SYSTEM
oci8.prefetch_lob_size"0"INI_SYSTEMДоступна начиная с версии PECL OCI8 3.2.
oci8.privileged_connectOffINI_SYSTEM
oci8.statement_cache_size"20"INI_SYSTEM
odbc.allow_persistent"1"INI_SYSTEM
odbc.check_persistent"1"INI_SYSTEM
odbc.max_persistent"-1"INI_SYSTEM
odbc.max_links"-1"INI_SYSTEM
odbc.defaultlrl"4096"INI_ALL
odbc.defaultbinmode"1"INI_ALL
odbc.default_cursortype"3"INI_ALL
opcache.enable1INI_ALL
opcache.enable_cli0INI_SYSTEMМежду PHP 7.1.2 и 7.1.6 включительно значение по умолчанию было равно 1
opcache.memory_consumption128INI_SYSTEM
opcache.interned_strings_buffer8INI_SYSTEM
opcache.max_accelerated_files10000INI_SYSTEM
opcache.max_wasted_percentage5INI_SYSTEM
opcache.use_cwd1INI_SYSTEM
opcache.validate_timestamps1INI_ALL
opcache.revalidate_freq2INI_ALL
opcache.revalidate_path0INI_ALL
opcache.save_comments1INI_SYSTEM
opcache.fast_shutdown0INI_SYSTEM
opcache.enable_file_override0INI_SYSTEM
opcache.optimization_level0x7FFEBFFFINI_SYSTEMДо PHP 7.3.0 значение равнялось 0x7FFFBFFF
opcache.inherited_hack1INI_SYSTEMУдалили в PHP 7.3.0
opcache.dups_fix0INI_ALL
opcache.blacklist_filename""INI_SYSTEM
opcache.max_file_size0INI_SYSTEM
opcache.consistency_checks0INI_ALL Опцию отключили с PHP 8.1.18 и 8.2.5 и удалили в PHP 8.3.0
opcache.force_restart_timeout180INI_SYSTEM
opcache.error_log""INI_SYSTEM
opcache.log_verbosity_level"1"INI_SYSTEM
opcache.record_warnings0INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.preferred_memory_model""INI_SYSTEM
opcache.protect_memory0INI_SYSTEM
opcache.mmap_basenullINI_SYSTEMОпция доступна только на ОС Windows
opcache.restrict_api""INI_SYSTEM
opcache.file_update_protection2INI_ALL
opcache.huge_code_pages0INI_SYSTEM
opcache.lockfile_path"/tmp"INI_SYSTEM
opcache.opt_debug_level0INI_SYSTEMОпция доступна с PHP 7.1.0
opcache.file_cachenullINI_SYSTEM
opcache.file_cache_only0INI_SYSTEM
opcache.file_cache_consistency_checks1INI_SYSTEM
opcache.file_cache_fallback1INI_SYSTEM
opcache.validate_permission0INI_SYSTEMОпция доступна с PHP 7.0.14
opcache.validate_root0INI_SYSTEMОпция доступна с PHP 7.0.14
opcache.preload""INI_SYSTEMОпция доступна с PHP 7.4.0
opcache.preload_user""INI_SYSTEMОпция доступна с PHP 7.4.0
opcache.cache_id""INI_SYSTEMОпция доступна с PHP 7.4.0 только на ОС Windows
opcache.jit"tracing"INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_buffer_size0INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_debug0INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_bisect_limit0INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_prof_threshold0.005INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_max_root_traces1024INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_max_side_traces128INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_max_exit_counters8192INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_hot_loop61INI_SYSTEMОпция доступна с PHP 8.0.0. До PHP 8.5.0 значение по умолчанию было 64
opcache.jit_hot_func127INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_hot_return8INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_hot_side_exit8INI_SYSTEMОпция доступна с PHP 8.0.0
opcache.jit_blacklist_root_trace16INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_blacklist_side_trace8INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_max_loop_unrolls8INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_max_recursive_calls2INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_max_recursive_returns2INI_ALLОпция доступна с PHP 8.0.0
opcache.jit_max_polymorphic_calls2INI_ALLОпция доступна с PHP 8.0.0
open_basedirnullINI_ALL
output_buffering"0"INI_PERDIR
output_handlernullINI_PERDIR
pcre.backtrack_limit"1000000"INI_ALL
pcre.recursion_limit"100000"INI_ALL
pcre.jit"1"INI_ALL
pdo.dsn.*только php.ini
pdo_odbc.connection_pooling"strict"INI_ALL
pdo_odbc.db2_instance_nameNULLINI_SYSTEM Функция устарела и ее удалят в будущем.
pgsql.allow_persistent"1"INI_SYSTEM
pgsql.max_persistent"-1"INI_SYSTEM
pgsql.max_links"-1"INI_SYSTEM
pgsql.auto_reset_persistent"0"INI_SYSTEM
pgsql.ignore_notice"0"INI_ALL
pgsql.log_notice"0"INI_ALL
phar.readonly"1"INI_ALL
phar.require_hash"1"INI_ALL
phar.cache_list""INI_SYSTEM
post_max_size"8M"INI_PERDIR
precision"14"INI_ALL
realpath_cache_size"16K"INI_SYSTEM
realpath_cache_ttl"120"INI_SYSTEM
register_argc_argv"1"INI_PERDIRС PHP 8.5.0 директива устарела.
report_memleaks"1"INI_ALLС PHP 8.5.0 директива устарела.
report_zend_debug"1"INI_ALL
request_order""INI_PERDIR
runkit.superglobal""INI_PERDIR
runkit.internal_override"0"INI_SYSTEM
sendmail_fromnullINI_ALL
sendmail_path"/usr/sbin/sendmail -t -i"INI_SYSTEM
serialize_precision"-1"INI_ALL До PHP 7.1.0 значением по умолчанию было 17.
session.save_path""INI_ALL
session.name"PHPSESSID"INI_ALL
session.save_handler"files"INI_ALL
session.auto_start"0"INI_PERDIR
session.gc_probability"1"INI_ALL
session.gc_divisor"100"INI_ALL
session.gc_maxlifetime"1440"INI_ALL
session.serialize_handler"php"INI_ALL
session.cookie_lifetime"0"INI_ALL
session.cookie_path"/"INI_ALL
session.cookie_domain""INI_ALL
session.cookie_secure"0"INI_ALLДо PHP 7.2.0 значение по умолчанию было "".
session.cookie_httponly"0"INI_ALLДо PHP 7.2.0 значение по умолчанию было "".
session.cookie_samesite""INI_ALLДиректива доступна с PHP 7.3.0.
session.use_strict_mode"0"INI_ALL
session.use_cookies"1"INI_ALL
session.use_only_cookies"1"INI_ALLОтключение настройки устарело с PHP 8.4.0.
session.referer_check""INI_ALLУстановка директиве значения, кроме пустой строки, устарела с PHP 8.4.0.
session.cache_limiter"nocache"INI_ALL
session.cache_expire"180"INI_ALL
session.use_trans_sid"0"INI_ALLВключение настройки устарело с PHP 8.4.0.
session.trans_sid_tags"a=href,area=href,frame=src,form="INI_ALL Директива доступна с PHP 7.1.0. Изменение настройки устарело с PHP 8.4.0.
session.trans_sid_hosts$_SERVER['HTTP_HOST']INI_ALL Директива доступна с PHP 7.1.0. Установка директиве значения, кроме пустой строки, устарела с PHP 8.4.0.
session.sid_length"32"INI_ALLДиректива появилась с PHP 7.1.0 и устарела с PHP 8.4.0.
session.sid_bits_per_character"4"INI_ALLДиректива появилась с PHP 7.1.0 и устарела с PHP 8.4.0.
session.upload_progress.enabled"1"INI_PERDIR
session.upload_progress.cleanup"1"INI_PERDIR
session.upload_progress.prefix"upload_progress_"INI_PERDIR
session.upload_progress.name"PHP_SESSION_UPLOAD_PROGRESS"INI_PERDIR
session.upload_progress.freq"1%"INI_PERDIR
session.upload_progress.min_freq"1"INI_PERDIR
session.lazy_write"1"INI_ALL
session.hash_function"0"INI_ALLУдалена в PHP 7.1.0.
session.hash_bits_per_character"4"INI_ALLУдалена в PHP 7.1.0.
session.entropy_file""INI_ALLУдалена в PHP 7.1.0.
session.entropy_length"0"INI_ALLУдалена в PHP 7.1.0.
short_open_tag"1"INI_PERDIR
SMTP"localhost"INI_ALL
smtp_port"25"INI_ALL
soap.wsdl_cache_enabled1INI_ALL
soap.wsdl_cache_dir/tmpINI_ALL
soap.wsdl_cache_ttl86400INI_ALL
soap.wsdl_cache1INI_ALL
soap.wsdl_cache_limit5INI_ALL
sql.safe_mode"0"INI_SYSTEMУдалено в PHP 7.2.0
sqlite3.extension_dir""INI_SYSTEM
sqlite3.defensive1INI_USER Доступно, начиная с PHP 7.2.17 и 7.3.4 для libsqlite ≥ 3.26.0. До PHP 8.2.0 этот параметр можно было изменить только как INI_SYSTEM.
syslog.facility"LOG_USER"INI_SYSTEMДоступно с PHP 7.3.0.
syslog.filter"no-ctrl"INI_ALLДоступно с PHP 7.3.0.
syslog.ident"php"INI_SYSTEMДоступно с PHP 7.3.0.
sys_temp_dir""INI_SYSTEM
sysvshm.init_mem10000INI_SYSTEM
tidy.default_config""INI_SYSTEM
tidy.clean_output"0"INI_USER
track_errors"0"INI_ALLС PHP 7.2.0 директива устарела, а в PHP 8.0.0 настройку удалили.
unserialize_callback_funcnullINI_ALL
unserialize_max_depth"4096"INI_ALLДоступно, начиная с PHP 7.4.0.
uploadprogress.file.filename_template"/tmp/upt_%s.txt"INI_ALL
upload_max_filesize"2M"INI_PERDIR
max_file_uploads20INI_SYSTEM
upload_tmp_dirnullINI_SYSTEM
url_rewriter.hosts""INI_ALLДоступна с PHP 7.1.0.
url_rewriter.tags"form="INI_ALL До PHP 7.1.0 значением по умолчанию было "a=href,area=href,frame=src,form=,fieldset=".
user_agentnullINI_ALL
user_dirnullINI_SYSTEM
user_ini.cache_ttl"300"INI_SYSTEM
user_ini.filename".user.ini"INI_SYSTEM
uopz.disable"0"INI_SYSTEMДоступна с uopz 5.0.2
uopz.exit"0"INI_SYSTEMДоступна с uopz 6.0.1
uopz.overloads"1"INI_SYSTEMДоступна с uopz 2.0.2. Удалили с uopz 5.0.0.
variables_order"EGPCS"INI_PERDIR
windows.show_crt_warning"0"INI_ALL
xbithack"0"INI_ALL
xmlrpc_errors"0"INI_SYSTEM
xmlrpc_error_number"0"INI_ALL
yaz.keepalive"120"INI_ALL
yaz.log_masknullINI_ALLДоступно с yaz 1.0.3.
zend.assertions"1"INI_ALL
zend.detect_unicode"1"INI_ALL
zend.enable_gc"1"INI_ALL
zend.max_allowed_stack_size"0"INI_SYSTEMДоступна с PHP 8.3.0
fiber.stack_sizeINI_ALLДоступна с PHP 8.1.0
zend.multibyte"0"INI_PERDIR
zend.reserved_stack_size"0"INI_SYSTEMДоступна с PHP 8.3.0
zend.script_encodingnullINI_ALL
zend.signal_check"0"INI_SYSTEM
zend_extensionnullТолько php.ini
zlib.output_compression"0"INI_ALL
zlib.output_compression_level"-1"INI_ALL
zlib.output_handler""INI_ALL
Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

This list includes the php.ini directives that can be used to configure PHP.

The "Changeable" column shows the modes determining when and where a directive may be set. See the Changeable mode values section for their definitions.

Configuration options
NameDefaultChangeableChangelog
allow_url_fopen"1"INI_SYSTEM
allow_url_include"0"INI_SYSTEMDeprecated as of PHP 7.4.0.
arg_separator.input"&"INI_PERDIR
arg_separator.output"&"INI_ALL
assert.active"1"INI_ALL
assert.bail"0"INI_ALL
assert.callbacknullINI_ALL
assert.exception"0"INI_ALL
assert.quiet_eval"0"INI_ALLRemoved as of PHP 8.0.0
assert.warning"1"INI_ALL
auto_append_filenullINI_PERDIR
auto_detect_line_endings"0"INI_ALL
auto_globals_jit"1"INI_PERDIR
auto_prepend_filenullINI_PERDIR
bcmath.scale"0"INI_ALL
browscapnullINI_SYSTEM
cgi.check_shebang_line"1"INI_SYSTEM
cgi.discard_path"0"INI_SYSTEM
cgi.fix_pathinfo"1"INI_SYSTEM
cgi.force_redirect"1"INI_SYSTEM
cgi.nph"0"INI_ALL
cgi.redirect_status_envnullINI_SYSTEM
cgi.rfc2616_headers"0"INI_ALL
child_terminate"0"INI_ALL
cli.pager""INI_ALL
cli.prompt"\\b \\> "INI_ALL
cli_server.color"0"INI_ALL
com.allow_dcom"0"INI_SYSTEM
com.autoregister_typelib"0"INI_ALL
com.autoregister_verbose"0"INI_ALL
com.autoregister_casesensitive"1"INI_ALL
com.code_page""INI_ALL
com.dotnet_version""INI_SYSTEMAs of PHP 8.0.0
com.typelib_file""INI_SYSTEM
curl.cainfoNULLINI_SYSTEM
date.default_latitude"31.7667"INI_ALL
date.default_longitude"35.2333"INI_ALL
date.sunrise_zenith"90.833333"INI_ALLPrior to PHP 8.0.0, the default was "90.583333"
date.sunset_zenith"90.833333"INI_ALLPrior to PHP 8.0.0, the default was "90.583333"
date.timezone"UTC"INI_ALLFrom PHP 8.2, a warning is emitted when setting this to an invalid value or an empty string.
dba.default_handlerDBA_DEFAULTINI_ALL
default_charset"UTF-8"INI_ALL
input_encoding""INI_ALL
output_encoding""INI_ALL
internal_encoding""INI_ALL
default_mimetype"text/html"INI_ALL
default_socket_timeout"60"INI_ALL
disable_classes""php.ini onlyRemoved as of PHP 8.5.0
disable_functions""php.ini only
display_errors"1"INI_ALL
display_startup_errors"1"INI_ALL Prior to PHP 8.0.0, the default value was "0".
docref_ext""INI_ALL
docref_root""INI_ALL
doc_rootnullINI_SYSTEM
enable_dl"1"INI_SYSTEMThis deprecated feature will certainly be removed in the future.
enable_post_data_reading"On"INI_PERDIR
engine"1"INI_ALL
error_append_stringnullINI_ALL
error_lognullINI_ALL
error_log_mode0o644INI_ALLAvailable as of PHP 8.2.0
error_prepend_stringnullINI_ALL
error_reportingnullINI_ALL
exif.encode_unicode"ISO-8859-15"INI_ALL
exif.decode_unicode_motorola"UCS-2BE"INI_ALL
exif.decode_unicode_intel"UCS-2LE"INI_ALL
exif.encode_jis""INI_ALL
exif.decode_jis_motorola"JIS"INI_ALL
exif.decode_jis_intel"JIS"INI_ALL
exit_on_timeout""INI_ALL
expect.timeout"10"INI_ALL
expect.loguser"1"INI_ALL
expect.logfile""INI_ALL
expect.match_max""INI_ALL
expose_php"1"php.ini only
extensionnullphp.ini only
extension_dir"/path/to/php"INI_SYSTEM
fastcgi.impersonate"0"INI_SYSTEM
fastcgi.logging"1"INI_SYSTEM
file_uploads"1"INI_SYSTEM
filter.default"unsafe_raw"INI_PERDIRDeprecated as of PHP 8.1.0.
filter.default_flagsNULLINI_PERDIR
from""INI_ALL
gd.jpeg_ignore_warning"1"INI_ALL
geoip.custom_directory""INI_ALL
hard_timeout"2"INI_SYSTEMAvailable as of PHP 7.1.0.
highlight.comment"#FF8000"INI_ALL
highlight.default"#0000BB"INI_ALL
highlight.html"#000000"INI_ALL
highlight.keyword"#007700"INI_ALL
highlight.string"#DD0000"INI_ALL
html_errors"1"INI_ALL
ibase.allow_persistent"1"INI_SYSTEM
ibase.max_persistent"-1"INI_SYSTEM
ibase.max_links"-1"INI_SYSTEM
ibase.default_dbNULLINI_SYSTEM
ibase.default_userNULLINI_ALL
ibase.default_passwordNULLINI_ALL
ibase.default_charsetNULLINI_ALL
ibase.timestampformat"%Y-%m-%d %H:%M:%S"INI_ALL
ibase.dateformat"%Y-%m-%d"INI_ALL
ibase.timeformat"%H:%M:%S"INI_ALL
ibm_db2.binmode"1"INI_ALL
ibm_db2.i5_all_pconnect"0"INI_SYSTEMAvailable as of ibm_db2 1.6.5.
ibm_db2.i5_allow_commit"0"INI_SYSTEMAvailable as of ibm_db2 1.4.9.
ibm_db2.i5_blank_userid"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_char_trim"0"INI_SYSTEMAvailable as of ibm_db2 2.1.0.
ibm_db2.i5_dbcs_alloc"0"INI_SYSTEMAvailable as of ibm_db2 1.5.0.
ibm_db2.i5_guard_profile"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_ignore_userid"0"INI_SYSTEMAvailable as of ibm_db2 1.8.0.
ibm_db2.i5_job_sort"0"INI_SYSTEMAvailable as of ibm_db2 1.8.4.
ibm_db2.i5_log_verbose"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_max_pconnect"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_override_ccsid"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_servermode_subsystemNULLINI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.i5_sys_naming"0"INI_SYSTEMAvailable as of ibm_db2 1.9.7.
ibm_db2.instance_nameNULLINI_SYSTEMAvailable as of ibm_db2 1.0.2.
iconv.input_encoding""INI_ALLDeprecated in PHP 5.6.0.
iconv.output_encoding""INI_ALLDeprecated in PHP 5.6.0.
iconv.internal_encoding""INI_ALLDeprecated in PHP 5.6.0.
ignore_repeated_errors"0"INI_ALL
ignore_repeated_source"0"INI_ALL
ignore_user_abort"0"INI_ALL
implicit_flush"0"INI_ALL
include_path".:/path/to/php/pear"INI_ALL
intl.default_localeINI_ALL
intl.error_level0INI_ALL
intl.use_exceptions0INI_ALLAvailable since PECL 3.0.0a1
last_modified"0"INI_ALL
ldap.max_links"-1"INI_SYSTEM
log_errors"0"INI_ALL
log_errors_max_len"1024"INI_ALL
mail.add_x_header"0"INI_PERDIR
mail.force_extra_parametersnullINI_SYSTEM
mail.log""INI_PERDIR
max_execution_time"30"INI_ALL
max_input_nesting_level"64"INI_PERDIR
max_input_vars1000INI_PERDIR
max_input_time"-1"INI_PERDIR
mbstring.language"neutral"INI_ALL
mbstring.detect_orderNULLINI_ALL
mbstring.http_input"pass"INI_ALLDeprecated
mbstring.http_output"pass"INI_ALLDeprecated
mbstring.internal_encodingNULLINI_ALLDeprecated
mbstring.substitute_characterNULLINI_ALL
mbstring.func_overload"0"INI_SYSTEM Deprecated as of PHP 7.2.0; removed as of PHP 8.0.0.
mbstring.encoding_translation"0"INI_PERDIR
mbstring.http_output_conv_mimetypes"^(text/|application/xhtml\+xml)"INI_ALL
mbstring.strict_detection"0"INI_ALL
mbstring.regex_retry_limit"1000000"INI_ALLAvailable as of PHP 7.4.0.
mbstring.regex_stack_limit"100000"INI_ALLAvailable as of PHP 7.3.5.
mcrypt.algorithms_dirnullINI_ALL
mcrypt.modes_dirnullINI_ALL
memcache.allow_failover"1"INI_ALLAvailable since memcache 2.0.2.
memcache.max_failover_attempts"20"INI_ALLAvailable since memcache 2.1.0.
memcache.chunk_size"8192"INI_ALLAvailable since memcache 2.0.2.
memcache.default_port"11211"INI_ALLAvailable since memcache 2.0.2.
memcache.hash_strategy"standard"INI_ALLAvailable since memcache 2.2.0.
memcache.hash_function"crc32"INI_ALLAvailable since memcache 2.2.0.
memcache.protocolasciiINI_ALLSupported since memcache 3.0.0
memcache.redundancy1INI_ALLSupported since memcache 3.0.0
memcache.session_redundancy2INI_ALLSupported since memcache 3.0.0
memcache.compress_threshold20000INI_ALLSupported since memcache 3.0.3
memcache.lock_timeout15INI_ALLSupported since memcache 3.0.4
memory_limit"128M"INI_ALL
mysql.allow_local_infile"1"INI_SYSTEM
mysql.allow_persistent"1"INI_SYSTEM
mysql.max_persistent"-1"INI_SYSTEM
mysql.max_links"-1"INI_SYSTEM
mysql.trace_mode"0"INI_ALL
mysql.default_portNULLINI_ALL
mysql.default_socketNULLINI_ALL
mysql.default_hostNULLINI_ALL
mysql.default_userNULLINI_ALL
mysql.default_passwordNULLINI_ALL
mysql.connect_timeout"60"INI_ALL
mysqli.allow_local_infile"0"INI_SYSTEMBefore PHP 7.2.16 and 7.3.3 the default was "1".
mysqli.local_infile_directoryINI_SYSTEMAvailable as of PHP 8.1.0.
mysqli.allow_persistent"1"INI_SYSTEM
mysqli.max_persistent"-1"INI_SYSTEM
mysqli.max_links"-1"INI_SYSTEM
mysqli.default_port"3306"INI_ALL
mysqli.default_socketNULLINI_ALL
mysqli.default_hostNULLINI_ALL
mysqli.default_userNULLINI_ALL
mysqli.default_pwNULLINI_ALL
mysqli.reconnect"0"INI_SYSTEMRemoved as of PHP 8.2.0
mysqli.rollback_on_cached_plink"0"INI_SYSTEM
mysqlnd.collect_statistics"1"INI_SYSTEM
mysqlnd.collect_memory_statistics"0"INI_SYSTEM
mysqlnd.debug""INI_SYSTEM
mysqlnd.log_mask0INI_ALL
mysqlnd.mempool_default_size16000INI_ALL
mysqlnd.net_read_timeout"86400"INI_ALL Before PHP 7.2.0 the default value was "31536000" and the changeability was INI_SYSTEM
mysqlnd.net_cmd_buffer_size"4096"INI_SYSTEM
mysqlnd.net_read_buffer_size"32768"INI_SYSTEM
mysqlnd.sha256_server_public_key""INI_PERDIR
mysqlnd.trace_alloc""INI_SYSTEM
mysqlnd.fetch_data_copy0INI_ALLRemoved as of PHP 8.1.0
oci8.connection_class""INI_ALL
oci8.default_prefetch"100"INI_SYSTEM
oci8.eventsOffINI_SYSTEM
oci8.max_persistent"-1"INI_SYSTEM
oci8.old_oci_close_semanticsOffINI_SYSTEMDeprecated as of PHP 8.1.0.
oci8.persistent_timeout"-1"INI_SYSTEM
oci8.ping_interval"60"INI_SYSTEM
oci8.prefetch_lob_size"0"INI_SYSTEMAvailable since PECL OCI8 3.2.
oci8.privileged_connectOffINI_SYSTEM
oci8.statement_cache_size"20"INI_SYSTEM
odbc.allow_persistent"1"INI_SYSTEM
odbc.check_persistent"1"INI_SYSTEM
odbc.max_persistent"-1"INI_SYSTEM
odbc.max_links"-1"INI_SYSTEM
odbc.defaultlrl"4096"INI_ALL
odbc.defaultbinmode"1"INI_ALL
odbc.default_cursortype"3"INI_ALL
opcache.enable1INI_ALL
opcache.enable_cli0INI_SYSTEMBetween PHP 7.1.2 and 7.1.6 inclusive, the default was 1
opcache.memory_consumption128INI_SYSTEM
opcache.interned_strings_buffer8INI_SYSTEM
opcache.max_accelerated_files10000INI_SYSTEM
opcache.max_wasted_percentage5INI_SYSTEM
opcache.use_cwd1INI_SYSTEM
opcache.validate_timestamps1INI_ALL
opcache.revalidate_freq2INI_ALL
opcache.revalidate_path0INI_ALL
opcache.save_comments1INI_SYSTEM
opcache.fast_shutdown0INI_SYSTEMRemoved in PHP 7.2.0
opcache.enable_file_override0INI_SYSTEM
opcache.optimization_level0x7FFEBFFFINI_SYSTEMChanged from 0x7FFFBFFF in PHP 7.3.0
opcache.inherited_hack1INI_SYSTEMRemoved in PHP 7.3.0
opcache.dups_fix0INI_ALL
opcache.blacklist_filename""INI_SYSTEM
opcache.max_file_size0INI_SYSTEM
opcache.consistency_checks0INI_ALLDisabled as of 8.1.18 and 8.2.5. Removed as of PHP 8.3.0.
opcache.force_restart_timeout180INI_SYSTEM
opcache.error_log""INI_SYSTEM
opcache.log_verbosity_level1INI_SYSTEM
opcache.record_warnings0INI_SYSTEMAvailable as of PHP 8.0.0
opcache.preferred_memory_model""INI_SYSTEM
opcache.protect_memory0INI_SYSTEM
opcache.mmap_basenullINI_SYSTEMWindows only.
opcache.restrict_api""INI_SYSTEM
opcache.file_update_protection2INI_ALL
opcache.huge_code_pages0INI_SYSTEM
opcache.lockfile_path"/tmp"INI_SYSTEM
opcache.opt_debug_level0INI_SYSTEMAvailable as of PHP 7.1.0
opcache.file_cachenullINI_SYSTEM
opcache.file_cache_only0INI_SYSTEM
opcache.file_cache_consistency_checks1INI_SYSTEM
opcache.file_cache_fallback1INI_SYSTEMWindows only.
opcache.validate_permission0INI_SYSTEMAvailable as of PHP 7.0.14
opcache.validate_root0INI_SYSTEMAvailable as of PHP 7.0.14
opcache.preload""INI_SYSTEMAvailable as of PHP 7.4.0
opcache.preload_user""INI_SYSTEMAvailable as of PHP 7.4.0
opcache.cache_id""INI_SYSTEMWindows only. Available as of PHP 7.4.0
opcache.jit"disable"INI_ALLAvailable as of PHP 8.0.0. Prior to PHP 8.4.0, the default value was "tracing".
opcache.jit_buffer_size64MINI_SYSTEMAvailable as of PHP 8.0.0. Prior to PHP 8.4.0, the default value was 0.
opcache.jit_debug0INI_ALLAvailable as of PHP 8.0.0
opcache.jit_bisect_limit0INI_ALLAvailable as of PHP 8.0.0
opcache.jit_prof_threshold0.005INI_ALLAvailable as of PHP 8.0.0
opcache.jit_max_root_traces1024INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_max_side_traces128INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_max_exit_counters8192INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_hot_loop61INI_SYSTEMAvailable as of PHP 8.0.0. Before PHP 8.5.0, the default value was 64
opcache.jit_hot_func127INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_hot_return8INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_hot_side_exit8INI_SYSTEMAvailable as of PHP 8.0.0
opcache.jit_blacklist_root_trace16INI_ALLAvailable as of PHP 8.0.0
opcache.jit_blacklist_side_trace8INI_ALLAvailable as of PHP 8.0.0
opcache.jit_max_loop_unrolls8INI_ALLAvailable as of PHP 8.0.0
opcache.jit_max_recursive_calls2INI_ALLAvailable as of PHP 8.0.0
opcache.jit_max_recursive_returns2INI_ALLAvailable as of PHP 8.0.0
opcache.jit_max_polymorphic_calls2INI_ALLAvailable as of PHP 8.0.0
open_basedirnullINI_ALL
output_buffering"0"INI_PERDIR
output_handlernullINI_PERDIR
pcre.backtrack_limit"1000000"INI_ALL
pcre.recursion_limit"100000"INI_ALL
pcre.jit"1"INI_ALL
pdo.dsn.*php.ini only
pdo_odbc.connection_pooling"strict"INI_ALL
pdo_odbc.db2_instance_nameNULLINI_SYSTEMThis deprecated feature will certainly be removed in the future.
pgsql.allow_persistent"1"INI_SYSTEM
pgsql.max_persistent"-1"INI_SYSTEM
pgsql.max_links"-1"INI_SYSTEM
pgsql.auto_reset_persistent"0"INI_SYSTEM
pgsql.ignore_notice"0"INI_ALL
pgsql.log_notice"0"INI_ALL
phar.readonly"1"INI_ALL
phar.require_hash"1"INI_ALL
phar.cache_list""INI_SYSTEM
post_max_size"8M"INI_PERDIR
precision"14"INI_ALL
realpath_cache_size"16K"INI_SYSTEM
realpath_cache_ttl"120"INI_SYSTEM
register_argc_argv"1"INI_PERDIRDeprecated as of PHP 8.5.0
report_memleaks"1"INI_ALLDeprecated as of PHP 8.5.0
report_zend_debug"1"INI_ALL
request_order""INI_PERDIR
runkit.superglobal""INI_PERDIR
runkit.internal_override"0"INI_SYSTEM
sendmail_fromnullINI_ALL
sendmail_path"/usr/sbin/sendmail -t -i"INI_SYSTEM
serialize_precision"-1"INI_ALL Prior to PHP 7.1.0, the default value was 17.
session.save_path""INI_ALL
session.name"PHPSESSID"INI_ALL
session.save_handler"files"INI_ALL
session.auto_start"0"INI_PERDIR
session.gc_probability"1"INI_ALL
session.gc_divisor"100"INI_ALL
session.gc_maxlifetime"1440"INI_ALL
session.serialize_handler"php"INI_ALL
session.cookie_lifetime"0"INI_ALL
session.cookie_path"/"INI_ALL
session.cookie_domain""INI_ALL
session.cookie_secure"0"INI_ALLPrior to PHP 7.2.0, the default was "".
session.cookie_httponly"0"INI_ALLPrior to PHP 7.2.0, the default was "".
session.cookie_partitioned"0"INI_ALLAvailable as of PHP 8.5.0.
session.cookie_samesite""INI_ALLAvailable as of PHP 7.3.0.
session.use_strict_mode"0"INI_ALL
session.use_cookies"1"INI_ALL
session.use_only_cookies"1"INI_ALLDisabling this setting is deprecated as of PHP 8.4.0.
session.referer_check""INI_ALLSetting a non-empty value is deprecated as of PHP 8.4.0.
session.cache_limiter"nocache"INI_ALL
session.cache_expire"180"INI_ALL
session.use_trans_sid"0"INI_ALLEnabling this setting is deprecated as of PHP 8.4.0.
session.trans_sid_tags"a=href,area=href,frame=src,form="INI_ALL Available as of PHP 7.1.0. Changing this setting is deprecated as of PHP 8.4.0.
session.trans_sid_hosts$_SERVER['HTTP_HOST']INI_ALL Available as of PHP 7.1.0. Setting a non-empty value is deprecated as of PHP 8.4.0.
session.sid_length"32"INI_ALL Available as of PHP 7.1.0. Changing this setting is deprecated as of PHP 8.4.0.
session.sid_bits_per_character"4"INI_ALL Available as of PHP 7.1.0. Changing this setting is deprecated as of PHP 8.4.0.
session.upload_progress.enabled"1"INI_PERDIR
session.upload_progress.cleanup"1"INI_PERDIR
session.upload_progress.prefix"upload_progress_"INI_PERDIR
session.upload_progress.name"PHP_SESSION_UPLOAD_PROGRESS"INI_PERDIR
session.upload_progress.freq"1%"INI_PERDIR
session.upload_progress.min_freq"1"INI_PERDIR
session.lazy_write"1"INI_ALL
session.hash_function"0"INI_ALLRemoved as of PHP 7.1.0.
session.hash_bits_per_character"4"INI_ALLRemoved as of PHP 7.1.0.
session.entropy_file""INI_ALLRemoved as of PHP 7.1.0.
session.entropy_length"0"INI_ALLRemoved as of PHP 7.1.0.
short_open_tag"1"INI_PERDIR
SMTP"localhost"INI_ALL
smtp_port"25"INI_ALL
soap.wsdl_cache_enabled1INI_ALL
soap.wsdl_cache_dir/tmpINI_ALL
soap.wsdl_cache_ttl86400INI_ALL
soap.wsdl_cache1INI_ALL
soap.wsdl_cache_limit5INI_ALL
sql.safe_mode"0"INI_SYSTEMRemoved as of PHP 7.2.0
sqlite3.extension_dir""INI_SYSTEM
sqlite3.defensive1INI_USER Available as of PHP 7.2.17 and 7.3.4 for libsqlite ≥ 3.26.0. Prior to PHP 8.2.0 this setting was changeable only as INI_SYSTEM.
syslog.facility"LOG_USER"INI_SYSTEMAvailable as of PHP 7.3.0.
syslog.filter"no-ctrl"INI_ALLAvailable as of PHP 7.3.0.
syslog.ident"php"INI_SYSTEMAvailable as of PHP 7.3.0.
sys_temp_dir""INI_SYSTEM
sysvshm.init_mem10000INI_SYSTEM
tidy.default_config""INI_SYSTEM
tidy.clean_output"0"INI_USER
track_errors"0"INI_ALLDeprecated as of PHP 7.2.0, removed as of PHP 8.0.0
unserialize_callback_funcnullINI_ALL
unserialize_max_depth"4096"INI_ALLAvailable as of PHP 7.4.0.
uploadprogress.file.filename_template"/tmp/upt_%s.txt"INI_ALL
upload_max_filesize"2M"INI_PERDIR
max_file_uploads20INI_SYSTEM
upload_tmp_dirnullINI_SYSTEM
url_rewriter.hosts""INI_ALLAvailable as of PHP 7.1.0.
url_rewriter.tags"form="INI_ALL Prior to PHP 7.1.0, the default value was "a=href,area=href,frame=src,form=,fieldset=".
user_agentnullINI_ALL
user_dirnullINI_SYSTEM
user_ini.cache_ttl"300"INI_SYSTEM
user_ini.filename".user.ini"INI_SYSTEM
uopz.disable"0"INI_SYSTEMAvailable as of uopz 5.0.2
uopz.exit"0"INI_SYSTEMAvailable as of uopz 6.0.1
uopz.overloads"1"INI_SYSTEMAvailable as of uopz 2.0.2. Removed as of uopz 5.0.0.
variables_order"EGPCS"INI_PERDIR
windows.show_crt_warning"0"INI_ALL
xbithack"0"INI_ALL
xmlrpc_errors"0"INI_SYSTEM
xmlrpc_error_number"0"INI_ALL
yaz.keepalive"120"INI_ALL
yaz.log_masknullINI_ALLAvailable as of yaz 1.0.3.
zend.assertions"1"INI_ALL
zend.detect_unicode"1"INI_ALL
zend.enable_gc"1"INI_ALL
zend.max_allowed_stack_size"0"INI_SYSTEMAvailable as of PHP 8.3.0
fiber.stack_sizeINI_ALLAvailable as of PHP 8.1.0
zend.multibyte"0"INI_PERDIR
zend.reserved_stack_size"0"INI_SYSTEMAvailable as of PHP 8.3.0
zend.script_encodingnullINI_ALL
zend.signal_check"0"INI_SYSTEM
zend_extensionnullphp.ini only
zlib.output_compression"0"INI_ALL
zlib.output_compression_level"-1"INI_ALL
zlib.output_handler""INI_ALL

Секции php.ini

Директива php.ini действует в определённом SAPI и имеет режим изменяемости. Перед правкой выясняют загруженный файл, дополнительные ini, допустимое место изменения и единицы значения; затем перезапускают или перечитывают нужный процесс и проверяют результат в том же окружении.

Полный официальный договор страницы

Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.

В этом списке указаны разделы, в которых вы можете настроить PHP в зависимости от хоста или пути. Эти разделы необязательны.

Данные разделы не имеют прямого влияния на PHP. Они нужны для группировки других директив php.ini вместе и для возможности действовать в зависимости от определённого хоста или пути.

Данные разделы используются только в режиме CGI/FastCGI и в них не могут быть использованы директивы extension и zend_extension.

Разделы
НазваниеМесто измененияИстория изменений
[HOST=]INI_SYSTEM
[PATH=]INI_SYSTEM

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

[HOST=<host>]

Данный раздел позволяет определять набор php.ini директив, которые будут применяться только к указанному хосту.

Пример #1 Активация полного логирования и сообщения об ошибках для dev. домена

[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
[PATH=<path>]

Данный раздел позволяет определять набор php.ini директив, которые будут применяться, если скрипт будет запущен из указанного пути.

Пример #2 Добавление скрипта безопасности для защищённых зон

[PATH=/home/site/public/secure]
auto_prepend_file=security.php
Нормативный английский оригинал из frozen baseline

Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.

This list includes the php.ini sections you can set to configure your PHP setup on a per Host or Path basis. These sections are optional.

These sections don't directly affect PHP. They are used to group other php.ini directives together and to get them to act upon a particular host or on a particular path.

These sections are used only in CGI/FastCGI mode and they can not set extension and zend_extension directives.

Sections
NameChangeableChangelog
[HOST=]INI_SYSTEM
[PATH=]INI_SYSTEM

Here's a short explanation of the configuration directives.

[HOST=<host>]

This section allows you to define a set of php.ini directives that will take effect on the named host.

Example #1 Activate full on-screen error reporting for dev. domain

[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
[PATH=<path>]

This section allows you to define a set of php.ini directives that will take effect when a script runs from the named path.

Example #2 Add security script for protected areas

[PATH=/home/site/public/secure]
auto_prepend_file=security.php

Правило одной среды: проверять там, где возникает ошибка

СимптомЧто проверить
CLI видит настройку, сайт — нетPHP_SAPI, php_ini_loaded_file(), scanned ini и перезапуск FPM.
Функция отсутствуетextension_loaded(), пакет ОС, отдельный ini SAPI и версия модуля.
Локально работает, на сервере падаетВерсия, ОС, права, рабочий каталог, locale, timezone и внешние библиотеки.
Изменение ini не действуетРежим PHP_INI_*, место изменения и фактическое значение через ini_get().
Источники и обсуждения

Код и руководство с собой

Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.

Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.

Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.