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

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

Обработка ошибок и журнализация

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

html_errors boolean
Включить отображение HTML-тегов в сообщения об ошибках.
html_errors = On
Если html_errors установлен в 'On', то PHP, выводит clickable-сообщения об ошибках, которые направляют пользователя к веб-странице, подробно описывающей ошибку или функцию, которая вызвала ошибку. Вы можете использовать оригинальное руководство PHP. Измените docref_root и docref_ext на следующие:

docref_root = "http://php5.kiev.ua/manual/"
docref_ext = .html

Замечание: Для новичков эти настройки позволяют оперативно установить и устранить ошибки в коде.

Опции Httpd

Опции Httpd
Имя По умолчанию Изменяемый Список изменений
async_send "0" PHP_INI_ALL  

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

Опции языка и прочих настроек
Имя По умолчанию Изменяемый Список изменений
short_open_tag "1" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.0.0.
asp_tags "0" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.0.0.
precision "14" PHP_INI_ALL  
y2k_compliance "1" PHP_INI_ALL  
allow_call_time_pass_reference "1" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.0.0.
expose_php "1" Только php.ini  
zend.ze1_compatibility_mode "0" PHP_INI_ALL Доступна с версии PHP 5.0.0.

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

short_open_tag boolean

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

Замечание: Эта директива также влияет на сокращение <?= , которое идентично записи <? echo . Для использования этого сокращения, директива short_open_tag должна быть включена.

asp_tags boolean
Включает использование тегов в стиле ASP в дополнение к обычным тегам <?php ?>. Это касается и сокращения для отображения значения переменных <%= $value %>. Для получения дополнительной информации, обратитесь к разделу Вставка в HTML.

Замечание: Поддержка тегов в стиле ASP выла добавлена в версии PHP 3.0.4.

precision integer
Количество значащих цифр, отображаемых для десятичных дробей.
y2k_compliance boolean
Включение совместимости с 2000 годом (создаст проблемы с несовместимыми браузерами).
allow_call_time_pass_reference boolean

Включена ли возможность жёсткой передачи аргументов по ссылке во время вызова функции. Этот метод является устаревшим и скорее всего не будет поддерживаться будущими версиями PHP/Zend. Рекомендуемым методом указания, какие аргументы должны быть переданы по ссылке, является указание этого при объявлении функции. Вам рекомендуется попытаться отключить эту опцию, чтобы убедиться, что ваши скрипты будут правильно работают без неё и что они будут работать с будущими версиями языка (вы будете получать предупреждение каждый раз, когда вы будете пользоваться этим методом, и аргументы будут передаваться по значению, а не по ссылке).

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

См. также Ссылки - подробное описание.

expose_php boolean

Определяет, разрешено ли PHP выдавать факт своего присутствия на сервере (например, добавляя свою подпись в заголовок веб-сервера). Ни в коей мере это не является угрозой безопасности, но это даёт возможность определить, используете ли вы PHP на своём сервере.

zend.ze1_compatibility_mode boolean

Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов и сравнение объектов.

См. также раздел Миграция из PHP 4 в PHP 5.

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

Ограничения ресурсов
Имя По умолчанию Изменяемый Список изменений
memory_limit "8M" PHP_INI_ALL  

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

memory_limit integer

Эта директива задаёт максимальный объём памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы использовать эту директиву, вы должны указать её на этапе компиляции. Так, ваша строка конфигурации должна включать: --enable-memory-limit. Обратите внимание, что вы должны установить эту директиву в -1, если не хотите ограничивать объём памяти.

Начиная с версии PHP 4.3.2, если memory_limit включён, стала доступна функция PHP memory_get_usage().

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

См. также: max_execution_time.

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

Конфигурационные опции обработки данных
Имя По умолчанию Изменяемый Список изменений
track_vars "On" PHP_INI_??
arg_separator.output "&" PHP_INI_ALL Доступна с версии PHP 4.0.5.
arg_separator.input "&" PHP_INI_PERDIR Доступна с версии PHP 4.0.5.
variables_order "EGPCS" PHP_INI_ALL  
register_globals "0" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.
register_argc_argv "1" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.
register_long_arrays "1" PHP_INI_PERDIR Доступна с версии PHP 5.0.0.
post_max_size "8M" PHP_INI_PERDIR PHP_INI_SYSTEM в PHP <= 4.2.3. Доступна с версии PHP 4.0.3.
gpc_order "GPC" PHP_INI_ALL  
auto_prepend_file NULL PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.
auto_append_file NULL PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.
default_mimetype "text/html" PHP_INI_ALL  
default_charset "" PHP_INI_ALL  
always_populate_raw_post_data "0" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.1.0.
allow_webdav_methods "0" PHP_INI_PERDIR  

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

track_vars boolean

Если включено, переменные окружения, GET, POST, Cookie и серверные переменные могут быть получены через глобальные ассоциативные массивы $_ENV, $_GET, $_POST, $_COOKIE и $_SERVER.

Обратите внимание, что начиная с версии PHP 4.0.3, track_vars всегда включена.

arg_separator.output string

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

arg_separator.input string

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

Замечание: Каждый символ в этой директиве считается разделителем!

variables_order string

Устанавливает порядок обработки переменных EGPCS (Environment, GET, POST, Cookie, Server). Значением по умолчанию для этой директивы является "EGPCS". Установка её в "GP", к примеру, заставит PHP полностью игнорировать переменные окружения, cookie и сервера, а так же перезаписать любую GET-переменную POST-переменной с таким же именем.

См. также register_globals.

auto_globals_jit boolean

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

Директивы PHP register_globals, register_long_arrays и register_argc_argv должны быть выключены для того, чтобы эта директива работала.

register_globals boolean

Регистрировать или нет переменные EGPCS (Environment, GET, POST, Cookie, Server) в качестве глобальных переменных.

Начиная с версии » PHP 4.2.0, значением по умолчанию для этой директивы является off.

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

Обратите внимание, что register_globals не может быть установлена во время выполнения скрипта (ini_set()). Тем не менее, вы можете использовать .htaccess, если ваш сервер позволяет это, как описано выше. Пример директивы в .htaccess: php_flag register_globals off .

Замечание: На поведение register_globals влияет директива variables_order.

register_argc_argv boolean
Сообщает PHP, следует ли объявляеть переменные argv и argc (которые будут содержать GET-информацию). См. также Использование PHP в командной строке. Эта директива стала доступна начиная с версии PHP 4.0.0 и до этого была всегда включена.
register_long_arrays boolean
Сообщает PHP, следует ли регистрировать устаревшие длинные предопределенные переменные типа $HTTP_*_VARS. Если включены (по умолчанию), длинные предопределенные переменные PHP, например $HTTP_GET_VARS, будут объявлены. Если вы их не используете, рекомендуем отключить их из соображений производительности. Вместо них следует использовать суперглобальные массивы, например $_GET. Эта директива стала доступна начиная с версии PHP 5.0.0.
post_max_size integer
Устанавливает максимальный допустимый размер POST-данных. Это свойство также влияет на закачиваемые файлы. Чтобы закачивать большие файлы, это значение должно быть выше upload_max_filesize. Если в вашем конфигурационном скрипте включено ограничение памяти, memory_limit также будет влиять на закачивание файлов. Проще говоря, memory_limit должна быть больше чем post_max_size . Если используется integer, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана в этом разделе FAQ.
gpc_order string

Устанавливает порядок обработки переменных GET/POST/COOKIE. Значением по умолчанию для этой директивы является "GPC". Установка её в "GP", к примеру, приведёт к тому, что PHP будет полностью игнорировать cookies и перезапишет любую GET-переменную POST-переменной с таким же именем.

Замечание: Эта опция не доступна в PHP 4. Вместо неё используйте variables_order.

auto_prepend_file string

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

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

auto_append_file string

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

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

Замечание: Если скрипт завершает работу при помощи exit(), auto_append_file НЕ выполняется.

default_mimetype string

default_charset string

Начиная с версии 4.0b4, PHP всегда отправляет кодировку по умолчанию в заголовке Content-Type. Чтобы отключить отправку кодировки, просто установите её пустой строкой.

always_populate_raw_post_data boolean

Всегда объявлять переменную $HTTP_RAW_POST_DATA.

allow_webdav_methods boolean

Разрешает обработку HTTP-запросов WebDAV при помощи PHP-скриптов (например PROPFIND, PROPPATCH, MOVE, COPY и т.д.). Эта директива не существует начиная с версии PHP 4.3.2. Если вы хотите получить POST-данные этих запросов, вы должны также включить always_populate_raw_post_data.

См. также: magic_quotes_gpc, magic_quotes_runtime и magic_quotes_sybase.

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

Конфигурационные Опции Путей и Директорий
Имя По умолчанию Изменяемый Список изменений
include_path ".;/path/to/php/pear" PHP_INI_ALL  
doc_root NULL PHP_INI_SYSTEM  
user_dir NULL PHP_INI_SYSTEM  
extension_dir "/path/to/php" PHP_INI_SYSTEM  
cgi.fix_pathinfo "0" PHP_INI_SYSTEM  
cgi.force_redirect "1" PHP_INI_SYSTEM  
cgi.redirect_status_env "" PHP_INI_SYSTEM  
fastcgi.impersonate "0" PHP_INI_SYSTEM  
cgi.rfc2616_headers "0" PHP_INI_SYSTEM  

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

include_path string

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

Пример #1 include_path в Unix

include_path=".:/php/includes"

Пример #2 include_path в Windows

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

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

doc_root string

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

user_dir string

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

extension_dir string

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

extension string

Which dynamically loadable extensions to load when PHP starts up.

cgi.fix_pathinfo boolean

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

cgi.force_redirect boolean

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

Замечание: Пользователям Windows: Вы можете безопасно выключить её под IIS. Более того, вы должны это сделать. Чтобы заставить OmniHTTPD или Xitami работать, вы должны отключить эту директиву.

cgi.redirect_status_env string

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

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

fastcgi.impersonate string

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

cgi.rfc2616_headers int

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

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

Конфигурационные Опции Закачивания Файлов
Имя По умолчанию Изменяемый Список изменений
file_uploads "1" PHP_INI_SYSTEM PHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.0.3.
upload_tmp_dir NULL PHP_INI_SYSTEM  
upload_max_filesize "2M" PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.

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

file_uploads boolean

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

Если используется integer, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана в этом разделе FAQ.
upload_tmp_dir string

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

upload_max_filesize integer

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

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

Общий SQL

Конфигурационные Опции Общего SQL
Имя По умолчанию Изменяемый Список изменений
sql.safe_mode "0" PHP_INI_SYSTEM  

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

sql.safe_mode boolean

Конфигурационные Директивы Отладчика

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

Отладчик по умолчанию реализован только в PHP 3. Для получения дополнительной информации обратитесь к разделу Отладка PHP.

debugger.host string

Имя DNS или IP адрес хоста, используемый отладчиком.

debugger.port string

Номер порта, используемый отладчиком.

debugger.enabled boolean

Определяет, включён ли отладчик.

Коментарии

"If the size of post data is greater than post_max_size..."

It seems that a more elegant way is comparison between post_max_size and $_SERVER['CONTENT_LENGTH']. Please note that the latter includes not only size of uploaded file plus post data but also multipart sequences. Leo
2006-05-29 18:45:33
http://php5.kiev.ua/manual/ru/ini.core.html
It appears that if you use both the 'include_path' directives and 'open_basedir', that file searches will hit the include path *first*, before local files. But if 'open_basedir' is not in use, then local files are found first. For example, suppose you have code in '/var/www/myfile.php' which does:

<?php
 
require_once('config.php');
?>

Further, assume that there is a local file '/var/www/config.php', and there is also a file '/var/local/php/config.php'.

Next, if your php.ini has:

  include_path = /var/local/php/

Normally, this would look for '/var/www/config.php' first, and if not found, then it would try '/var/local/php/config.php'.

But if you also have this in php.ini:

  open_basedir = /var/www/:/var/local/php/

Then the require would reverse the order of the search, and load '/var/local/php/config.php', even when the local 'config.php' file exists.

Furthermore, if include_path contains directories not in open_basedir, you can end up with a fatal error. For example, change the directive to:

  open_basedir = /var/www/:/var/local/includes/php/

Now the require will first find '/var/local/php/config.php' from the include_path, try to include it, but be unable to because of the open_basedir restrictions.
2016-03-03 19:11:54
http://php5.kiev.ua/manual/ru/ini.core.html
This might help in case someone happens to maintain old applications with a charset other than utf-8.

According to the docs, you can override the default charset if you use `header()`.

Suppose php.ini sets the default_charset to "UTF-8", but you need a legacy charset, like ISO-8859-1.

Still,

<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>

would not override the charset, just add it as well and the result
was a response header like (note the two charsets):

    Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"

I found it strange the default one as `charset` with a lowercase `c`
as opposed to my custom charset with an uppercase `C`.

What solved was to _override_ the charset using all lowercase letters
as well for the word “charset”:

<?php header('content-type: text/html; charset=ISO-8859-1'); ?>

Then, the double charset from the response headers disappeared, and only the single, custom charset remained.
2016-10-17 23:06:25
http://php5.kiev.ua/manual/ru/ini.core.html
Note regarding the upload_tmp_dir setting and UNC Paths:

When using PHP on Windows OS and IIS FastCGI, if you need to use a UNC path to a folder on a network drive for the upload_tmp_dir setting then you must use three \ characters at the front of the UNC path. 

Windows and PHP use the first slash as an escape character, so if you only use two slashes then it passes a UNC path with just one backslash. That is not valid for UNC paths and you many experience problems when uploading files, such as errors saying that "PHP is missing a temporary folder".

Correct:
upload_tmp_dir = "\\\path\to\your\folder"

Incorrect:
upload_tmp_dir = "\\path\to\your\folder"
2019-08-15 14:14:53
http://php5.kiev.ua/manual/ru/ini.core.html
Автор:
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
2020-03-03 16:59:38
http://php5.kiev.ua/manual/ru/ini.core.html
Автор:
I had a problem with 'open_basedir =' string in php.ini. This string was writtren in VirtualHost Directory directive of Apache2 and successfully rewrote the same php.ini setting! It happened with VestaCP, but I think, it's a common way. Goog luck!
2020-04-22 17:40:05
http://php5.kiev.ua/manual/ru/ini.core.html
Автор:
Be careful while using auto_prepend_file.

When the custom exception handler, set by set_exception_handler(), handles an uncaught exception, it interrupts the execution of every script.

If the script with the unhandled exception has been automatically prepended or included by an automatically prepended script, however, the main script will continue running anyway.

This could cause several issues: when we think that throwing an exception would automatically interrupt the current application, a whole chunk of code is going to run anyway.
2021-01-19 02:08:06
http://php5.kiev.ua/manual/ru/ini.core.html
If you use Microsoft IIS Windows and want to use open_basedir restrictions with multiple dirs you have to set them into single quotes in the main config xml file of IIS (C:\Windows\System32\inetsrv\config\applicationHost.config). Works fine in IIS 10.

Multiple files with single quotes and ; for windows:
"C:\php\php-cgi.exe|-d open_basedir='C:\Windows\Temp\;D:\mywebsite1\'"

Only one dir works fine without single quotes:
"C:\php\php-cgi.exe|-d open_basedir=D:\mywebsite1\"

In my main config xml file of IIS there are 2 nodes to set per website and the definitions have to be equal:
configuration\Location\system.webServer\handlers\add
configuration\system.webServer\fastCgi
2021-03-23 11:55:58
http://php5.kiev.ua/manual/ru/ini.core.html

    Поддержать сайт на родительском проекте КГБ