Описание встроенных директив php.ini

Этот список включает встроенные директивы php.ini, которые вы можете использовать для настройки 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 
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. Если вы хотите использовать PHP совместно с XML, вы можете отключить эту опцию, чтобы беспрепятственно использовать <?xml ?>. В противном случае, вы можете отобразить это при помощи PHP, например: <?php echo '<?xml version="1.0"?>'; ?>. Если же эта опция отключена, вы должны использовать длинную форму открывающего тега PHP (<?php ?>).

Замечание:

Эта директива не влияет на сокращение <?=, которое всегда доступно.

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

Выдаёт факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7).

disable_functionsstring

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

Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.

Эта директива должна быть установлена в php.ini. Например, её нельзя использовать в httpd.conf.

disable_classesstring
Эта директива позволяет отключить некоторые классы. Она принимает список имён классов, разделённых запятыми. Эта директива должна быть установлена в php.ini. Например, её нельзя использовать в httpd.conf.
zend.assertionsint
Если задано значение 1, проверочный код будет исполняться (режим разработки). Если задан 0, код проверок будет сгенерирован, однако исполняться не будет. Если задано -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 и т.д., содержащих специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например UTF-8, EUC и т.д., не требуют эту опцию.

Модуль zend.multibyte требует установленного модуля "mbstring".

zend.script_encodingstring

Данное значение будет использовано, только при отсутствии директивы 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

Эта директива только для Apache1 mod_php, которая заставляет потомка 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 открывает большое количество файлов соответственно количеству выполняемых файловых операций.

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

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

realpath_cache_ttlint

Время (в секундах) в течение которого будет использован кеш 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 
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

Этот разделитель используется в генерируемых PHP URL в качестве разделителя аргументов.

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 в командной строке.
enable_post_data_readingbool
При отключении этой опции суперглобальные переменные $_POST и $_FILESне будут заполняться. Единственным способом прочесть POST-данные будет чтение обёртки потока php://input. Это может оказаться полезным при проксировании запросов или обработки 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-битную версию), так как это приведёт к ошибке вашего скрипта.

Список изменений 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. Он проверяет первый путь, если файл в нем не найден, то он переходит к следующему, и так до тех пор, пока не найдёт подключаемый файл, либо вернёт 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, включая сам файл.

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

Опция open_basedir может распространяться не только на функции для работы с файловой системой; например, если MySQL настроен использовать драйвер mysqlnd, то LOAD DATA INFILE подпадает под опцию open_basedir. Множество функций PHP также использует open_basedir.

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

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

В Windows разделяйте директории точкой с запятой. На всех остальных системах, разделяйте директории двоеточием. При работе в качестве модуля Apache, пути open_basedir автоматически наследуются от родительских директорий.

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

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

Замечание:

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

Замечание:

Использование опции 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: При использовании IIS эта опция должна быть отключена. Тоже самое необходимо для OmniHTTPD и Xitami.

cgi.nphbool

Если cgi.nph разрешена, cgi будет принудительно возвращать код 200 на каждый запрос.

cgi.redirect_status_envstring

Если cgi.force_redirect включена и вы работаете не под веб-сервером Apache или Netscape (iPlanet), вам может понадобиться установить переменную окружения, которую будет искать PHP чтобы убедиться, что он может продолжать выполнение.

Замечание:

Установка этой переменной может повлечь за собой проблемы с безопасностью, так что вы должны знать, что вы делаете.

cgi.rfc2616_headersint

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

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

Оставьте в значении 0, если вы не уверены в том, что это значит.

fastcgi.impersonatestring

FastCGI под IIS (в ОС на базе WINNT) поддерживает возможность имперсонации прав безопасности вызывающего клиента. Это позволяет IIS определить контекст безопасности, в котором выполняется запрос. mod_fastcgi под Apache на текущий момент не поддерживает эту возможность (03/17/2002). Установите в 1 при работе под IIS. Значение по умолчанию - ноль.

fastcgi.loggingbool

Включает логирование SAPI при использовании 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 откатится обратно к системной временной директории, используемой по умолчанию. Если включена директива 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

При включении данной директивы будут отображаться предупреждения Windows CRT.

To Top