Описание встроенных директив php.ini
Этот список включает встроенные директивы php.ini, которые вы можете использовать для настройки PHP. Директивы, которые обрабатываются модулями, перечислены и подробно описаны на страницах документаций соответствующих модулей. К примеру, информация о директивах сессий может быть найдена на странице документации сессий.
Замечание:
Представленные здесь значения по умолчанию используются в случае, если не был подключен php.ini; значения для боевого php.ini и для разработки могут различаться.
Языковые опции
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| short_open_tag | "1" | PHP_INI_PERDIR | |
| asp_tags | "0" | PHP_INI_PERDIR | Удалена в PHP 7.0.0. |
| precision | "14" | PHP_INI_ALL | |
| serialize_precision | "-1" | PHP_INI_ALL | До версии PHP 5.3.5 значение по умолчанию было равно 100. До версии PHP 7.1.0 значение по умолчанию было равно 17. |
| y2k_compliance | "1" | PHP_INI_ALL | Удалена в PHP 5.4.0. |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | Удалена в PHP 5.4.0. |
| disable_functions | "" | Только PHP_INI_SYSTEM | |
| disable_classes | "" | Только php.ini | |
| exit_on_timeout | "" | PHP_INI_ALL | Доступна с версии PHP 5.3.0. |
| expose_php | "1" | Только php.ini | |
| hard_timeout | "2" | PHP_INI_SYSTEM | Доступна с версии PHP 7.1.0. |
| zend.exception_ignore_args | "0" | PHP_INI_ALL | Доступна с версии PHP 7.4.0 |
| zend.multibyte | "0" | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
| zend.script_encoding | NULL | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
| zend.detect-unicode | NULL | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
| zend.signal_check | "0" | PHP_INI_SYSTEM | Доступна с версии PHP 5.4.0 |
| zend.assertions | "1" | PHP_INI_ALL с ограничениями | Доступна с версии PHP 7.0.0. |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Удалена в PHP 5.3.0 |
| detect_unicode | "1" | PHP_INI_ALL | Доступна с версии PHP 5.1.0. Переименована на zend.detect-unicode с версии PHP 5.4.0. |
Краткое разъяснение конфигурационных директив.
-
short_open_tagbool -
Определяет, разрешается ли короткая форма записи (
<? ?>) тегов PHP. Если вы хотите использовать PHP совместно с XML, вы можете отключить эту опцию, чтобы беспрепятственно использовать<?xml ?>. В противном случае, вы можете отобразить это при помощи PHP, например:<?php echo '<?xml version="1.0"?>'; ?>. Если же эта опция отключена, вы должны использовать длинную форму открывающего тега PHP (<?php ?>).Замечание:
Эта директива также влияла на сокращение
<?=до версии PHP 5.4.0, которое идентично записи<? echo. Для использования этого сокращения должна была быть включена директиваshort_open_tag. Начиная с версии PHP 5.4.0 запись<?=стала доступна всегда. -
Включает использование тегов в стиле ASP в дополнение к обычным тегам <?php ?>.
Это касается и сокращения для отображения значения переменных <%= $value %>.
Для получения дополнительной информации, обратитесь к разделу Экранирование HTML.
Changelog for asp_tagsВерсия Описание 7.0.0 Удалена из PHP. -
precisionint -
Количество значащих цифр, отображаемых для чисел с плавающей точкой.
-1означает, что будет использован усовершенствованный алгоритм для округления таких чисел. -
serialize_precisionint -
Количество сохраняемых значащих цифр при сериализации чисел с плавающей точкой.
-1означает, что будет использован усовершенствованный алгоритм для округления таких чисел. -
y2k_compliancebool - Включение совместимости с 2000 годом (создаст проблемы с несовместимыми браузерами)
-
allow_call_time_pass_referencebool -
Нужно ли выводить предупреждение, если аргументы передаются по ссылке при вызове функции. Рекомендуется указывать в объявлении функции передаваемые по ссылке аргументы. Попробуйте выключить эту опцию и убедиться, что ваши скрипты правильно работают без нее и что они будут работать с будущими версиями языка (вы будете получать предупреждение каждый раз, когда вы будете пользоваться этой возможностью).
Передача аргументов по ссылке во время вызова функции была объявлена устаревшей из соображений чистоты кода. Функция может менять свои аргументы недокументированным способом, если бы аргумент не объявлялся передаваемым по ссылке. Чтобы избежать побочных эффектов, лучше явно указывать, какие аргументы передаются по ссылке только при объявлении функции.
См. также Подробное описание ссылок.
Список изменений для allow_call_time_pass_referenceВерсия Описание 5.4.0 Удалена из PHP. 5.3.0 Генерирует ошибку уровня E_DEPRECATED.5.0.0 Устарела и генерирует ошибку уровня E_COMPILE_WARNING. -
expose_phpbool -
Выдает факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7). До версии PHP 5.5.0 также показывались идентификаторы логотипов, таким образом, при добавлении их к ссылке на сайте с PHP показывался соответствующий логотип (например, » https://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Отключение данной опции также влияло на вывод функции phpinfo(), в этом случае логотип PHP и информация о разработчиках, принимавших участие в разработке PHP, не отображались.
Замечание:
В версии PHP 5.5.0 данные идентификаторы логотипов и функция php_logo_guid() были удалены, теперь для отображения логотипов используется механизм data URI. Таким образом добавление идентификатора логотипа к ссылке (для показа логотипа) больше не работает. Аналогично, выключение опции
expose_phpболее не влияет на отображение логотипа PHP в выводе функции phpinfo().Смотрите также php_logo_guid() и phpcredits().
-
disable_functionsstring -
Эта директива позволяет отключить некоторые функции. Она принимает список имен функций, разделенный запятыми.
Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.
Эта директива должна быть установлена в php.ini. Например, ее нельзя использовать в httpd.conf.
-
disable_classesstring - Эта директива позволяет отключить некоторые классы. Она принимает список имен классов, разделенных запятыми. Эта директива должна быть установлена в php.ini. Например, ее нельзя использовать в httpd.conf.
-
zend.assertionsint -
Если задано значение
1, проверочный код будет исполняться (режим разработки). Если задан0, код проверок будет сгенерирован, одноко исполняться не будет. Если задано-1, проверочный код не будет генерироваться (продуктивный режим).Замечание:
Если процесс стартован в режиме релиза, zend.assertions не может быть изменен во время выполнения, так как код утверждений не генерируется.
Если процесс стартован в режиме разработки, zend.assertions не может быть выставлен в
-1во время выполнения.. -
zend.ze1_compatibility_modebool -
Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов (объекты без свойств приводятся к
falseили 0) и сравнение объектов. В этом режиме объекты по умолчанию передаются по значению вместо ссылки.См. также раздел Переход с PHP 4 на PHP 5.
ВниманиеЭта возможность была помечена УСТАРЕВШЕЙ и БЫЛА УДАЛЕНА в версии PHP 5.3.0.
-
hard_timeoutint -
-
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_enconding в 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" | PHP_INI_ALL | "8M" до PHP 5.2.0, "16M" в PHP 5.2.0 |
Краткое разъяснение конфигурационных директив.
-
memory_limitint -
Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в
-1.В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: --enable-memory-limit. Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.
Если используется int, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.
См. также: max_execution_time.
Настройка производительности
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| realpath_cache_size | "4M" | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. До PHP 7.0.16 и 7.1.2, по умолчанию было "16K" |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. |
Замечание:
Использование open_basedir отключит кеш realpath.
Краткое разъяснение конфигурационных директив.
-
realpath_cache_sizeint -
Определяет размера кэша realpath, используемого в PHP. Это значение должно быть увеличено на системах, в которых PHP открывает большое количество файлов соответственно количеству выполняемых файловых операций.
Размер равный общему числу байт, хранящимся в строках путей, плюс размер данных связанных с кешируемым элементом. Это значит, что для хранения длинных путей в кэше, размер этого кэша должен быть больше. Это значение не определяет напрямую количество разных путей, которые могут быть закэшированы.
Размер, необходимый для кэширования, зависит от системы.
-
realpath_cache_ttlint -
Время (в секундах) в течение которого будет использован кэш realpath для указанного файла или директории. Для систем с редко меняющимися файлами это значение можно увеличить.
Обработка данных
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| arg_separator.output | "&" | PHP_INI_ALL | |
| arg_separator.input | "&" | PHP_INI_PERDIR | |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 5.0.5. |
| request_order | "" | PHP_INI_PERDIR | Доступна с версии PHP 5.3.0 |
| auto_globals_jit | "1" | PHP_INI_PERDIR | Доступна с версии PHP 5.0.0. |
| register_globals | "0" | PHP_INI_PERDIR | Удалена в PHP 5.4.0. |
| register_argc_argv | "1" | PHP_INI_PERDIR | |
| register_long_arrays | "1" | PHP_INI_PERDIR | Помечена устаревшей в PHP 5.3.0. Удалена в PHP 5.4.0. |
| enable_post_data_reading | "1" | PHP_INI_PERDIR | Доступна с версии PHP 5.4.0 |
| post_max_size | "8M" | PHP_INI_PERDIR | |
| auto_prepend_file | NULL | PHP_INI_PERDIR | |
| auto_append_file | NULL | PHP_INI_PERDIR | |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "UTF-8" | PHP_INI_ALL | По умолчанию "UTF-8" с PHP >= 5.6.0; пустая для PHP < 5.6.0. |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | Удалена в PHP 7.0.0. |
Краткое разъяснение конфигурационных директив.
-
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 не будет установлена.Если включена устаревшая директива register_globals, то variables_order также устанавливает порядок экспорта переменных
ENV,GET,POST,COOKIEиSERVERв глобальное пространство. Например, если порядок переменных установлен как"EGPCS", register_globals включена, и существуют обе $_GET['action'] и $_POST['action'], то переменная $action будет содержать значение $_POST['action'], так какPв нашем примере идет послеG.ВниманиеВ 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), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведет к росту производительности.
Директивы PHP register_globals, register_long_arrays и register_argc_argv должны быть выключены для правильной работы этой директивы. Начиная с версии PHP 5.1.3 стало необязательно выключать register_argc_argv.
ВниманиеИспользование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.
-
register_globalsbool -
Регистрировать или нет переменные 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.ВниманиеДанная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.
-
register_argc_argvbool - Сообщает PHP, следует ли объявлять переменные argv и argc (которые будут содержать GET-информацию). См. также Использование PHP в командной строке.
-
register_long_arraysbool -
Сообщает PHP, следует ли регистрировать устаревшие длинные
предопределенные
переменные типа $HTTP_*_VARS.
Если включена (по умолчанию), то длинные предопределенные переменные
PHP, например $HTTP_GET_VARS, будут объявлены.
Если вы их не используете, рекомендуем отключить их из соображений
производительности. Вместо них следует использовать суперглобальные
массивы, например $_GET.
Эта директива стала доступна с версии PHP 5.0.0.
Внимание
Данная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.
-
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 -
В PHP 5.6 и новее "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 -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто.
-
output_encodingstring -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто.
-
internal_encodingstring -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей, таких как mbstring и iconv. По умолчанию пусто. В это случае используется default_charset.
-
always_populate_raw_post_datamixed -
Внимание
Эта функциональность считается УСТАРЕВШЕЙ с PHP 5.6.0 и УДАЛЕНА в PHP 7.0.0.
Если установлена в
true, то PHP будет всегда компоновать $HTTP_RAW_POST_DATA сырыми POST данными. Иначе, переменная компонуется только если не распознан MIME-тип.Рекомендуемым методом для доступа к сырым POST данным является php://input, и $HTTP_RAW_POST_DATA считается устаревшим с PHP 5.6.0. Установка
always_populate_raw_post_dataв значение-1задает новое поведение, которое будет реализовано в будущих версиях PHP, когда $HTTP_RAW_POST_DATA больше не будет использоваться.Согласно настройкам $HTTP_RAW_POST_DATA не доступен при
enctype="multipart/form-data".
См. также: magic_quotes_gpc, magic_quotes_runtime и magic_quotes_sybase.
Пути и Директории
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | PHP_INI_ALL | |
| open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM в PHP < 5.3.0 |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| user_ini.cache_ttl | "300" | PHP_INI_SYSTEM | Доступно с PHP 5.3.0. |
| user_ini.filename | ".user.ini" | PHP_INI_SYSTEM | Доступно с PHP 5.3.0. |
| extension_dir | "/path/to/php" | PHP_INI_SYSTEM | |
| extension | NULL | Только php.ini | |
| zend_extension | NULL | Только php.ini | |
| zend_extension_debug | NULL | Только php.ini | Доступна до PHP 5.3.0. |
| zend_extension_debug_ts | NULL | Только php.ini | Доступна до PHP 5.3.0. |
| zend_extension_ts | NULL | Только php.ini | Доступна до PHP 5.3.0. |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | Доступна с версии PHP 5.2.0. |
| cgi.discard_path | "0" | PHP_INI_SYSTEM | Доступна с версии PHP 5.3.0. |
| cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.nph | "0" | PHP_INI_SYSTEM | Доступна с версии PHP 5.3.0. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | PHP_INI_ALL до версии PHP 5.2.1. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | PHP_INI_ALL до версии PHP 5.2.1. |
Краткое разъяснение конфигурационных директив.
-
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 является именем директории начиная с версии PHP 5.2.16 и 5.3.4. Предыдущие версии использовали это значение в качестве префикса. Это означает, что "
open_basedir = /dir/incl" также разрешит доступ к "/dir/include" и "/dir/incls", если они существуют. Если вы захотите ограничить доступ только указанной директорией, поставьте в конце слеш. Например:open_basedir = /dir/incl/По умолчанию все файлы могут быть открыты.
Замечание:
Начиная с версии PHP 5.3.0 значение open_basedir можно сделать более строгим во время выполнения скрипта. Это означает, что если open_basedir была установлена в
/www/в php.ini, то скрипт может ужать конфигурацию до/www/tmp/во время выполнения с помощью ini_set(). При указании нескольких директорий можно использовать константуPATH_SEPARATORв качестве разделителя путей, не зависящего от операционной системы.Замечание:
Использование опции open_basedir установит realpath_cache_size на значение
0и таким образом отключит кеш realpath. -
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.
-
zend_extension_debugstring -
Вариант zend_extension для модулей, скомпилированных с отладочной информацией до PHP 5.3.0.
-
zend_extension_debug_tsstring -
Вариант zend_extension для потокобезопасных модулей, скомпилированных с отладочной информацией до PHP 5.3.0.
-
zend_extension_tsstring -
Вариант zend_extension для потокобезопасных модулей.
-
cgi.check_shebang_linebool -
Контролирует, нужно ли проверять первую строку CGI PHP-скрипта на содержание
#!(shebang). Эта строка может быть необходима, если скрипт должен поддерживать как отдельный запуск, так и с помощью PHP CGI. PHP в режиме CGI пропускает эту строку и игнорирует ее содержимое, если данная директива включена. -
cgi.discard_pathbool -
Если разрешено, бинарный файл PHP CGI может безопасно располагаться вне web-дерева и люди не смогут обойти безопасность .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" | PHP_INI_SYSTEM | |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| max_input_nesting_level | 64 | PHP_INI_PERDIR | Доступна с версии PHP 5.3.9. |
| max_input_vars | 1000 | PHP_INI_PERDIR | Доступна с версии PHP 5.3.9. |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | |
| max_file_uploads | 20 | PHP_INI_SYSTEM | Доступна с версии PHP 5.2.12. |
Краткое разъяснение конфигурационных директив.
-
file_uploadsbool -
Разрешать или не разрешать закачивание файлов. См. также директивы upload_max_filesize, upload_tmp_dir и post_max_size.
-
upload_tmp_dirstring -
Временная директория, используемая для хранения файлов во время закачивания. Должна быть доступна для записи пользователю, от имени которого запущен PHP. Если не указана, используется директория по умолчанию для вашей системы.
Если к указанной директории нет прав на запись, PHP откатится обратно к системной временной директории, используемой по умолчанию. Если включена директива open_basedir, то для успешной загрузки файлов системная директория по умолчанию должна быть разрешена.
-
upload_max_filesizeint -
Максимальный размер закачиваемого файла.
Если используется int, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ. -
max_file_uploadsint -
Максимально разрешенное количество одновременно закачиваемых файлов. Начиная с PHP 5.3.4, пустые поля загрузки не рассматриваются этим ограничением.
Общий SQL
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM | Удален в PHP 7.2.0 |
Краткое разъяснение конфигурационных директив.
-
sql.safe_modebool -
Если включена, функции соединения с базой данных, использующие значения по умолчанию, будут использовать эти значения вместо любых передаваемых аргументов. Для значений по умолчанию смотрите документацию по функциям подключения соответствующей базы данных.
ВниманиеЭта опция УДАЛЕНА в PHP 7.2.0.
Особые настройки для ОС Windows
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| windows.show_crt_warning | "0" | PHP_INI_ALL | Доступна начиная с PHP 5.4.0. |
Краткое разъяснение конфигурационных директив.
-
windows.show_crt_warningbool -
При включении данной директивы будут отображаться предупреждения Windows CRT. Данные предупреждения ранее показывались по умолчанию до версии PHP 5.4.0.