auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation.
Описание встроенных директив php.ini
Этот список включает встроенные директивы php.ini, которые вы можете использовать для настройки PHP. Директивы, которые обрабатываются модулями, перечислены и подробно описаны на страницах документаций соответствующих модулей. К примеру, информация о директивах сессий может быть найдена на странице документации сессий.
Опции Httpd
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| async_send | "0" | PHP_INI_ALL |
Языковые опции
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| short_open_tag | "1" | PHP_INI_ALL | PHP_INI_ALL в PHP <= 4.0.0. PHP_INI_PERDIR в PHP < 5.3.0 |
| asp_tags | "0" | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.0.0. |
| precision | "14" | PHP_INI_ALL | |
| serialize_precision | "17" | PHP_INI_ALL | Доступна с версии PHP 4.3.2. До версии PHP 5.3.5 значение по умолчанию было равно 100. |
| y2k_compliance | "1" | PHP_INI_ALL | Удалена в PHP 5.4.0. |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP_INI_ALL в PHP 4.0.0. |
| disable_functions | "" | php.ini only | Доступна с версии PHP 4.0.1. |
| disable_classes | "" | php.ini only | Доступна с версии PHP 4.3.2. |
| exit_on_timeout | "" | PHP_INI_ALL | Доступна с версии PHP 5.3.0. |
| expose_php | "1" | Только php.ini | |
| zend.multibyte | "0" | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
| zend.script_encoding | NULL | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
| zend.signal_check | "0" | PHP_INI_SYSTEM | Доступна с версии PHP 5.4.0 |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Доступна с версии PHP 5.0.0. Удалена в PHP 5.3.0 |
| detect_unicode | "1" | PHP_INI_ALL | Доступна с версии PHP 5.1.0. Эта возможность устарела и будет обязательно удалена в будущем. |
Краткое разъяснение конфигурационных директив.
-
short_open_tagboolean -
Определяет, разрешается ли короткая форма записи (
<? ?>) тегов 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.
-
precisioninteger - Количество значащих цифр, отображаемых для чисел с плавающей точкой.
-
serialize_precisioninteger - Количество сохраняемых значащих цифр при сериализации чисел с плавающей точкой.
-
y2k_complianceboolean - Включение совместимости с 2000 годом (создаст проблемы с несовместимыми браузерами)
-
allow_call_time_pass_referenceboolean -
Нужно ли выводить предупреждение, если аргументы передаются по ссылке при вызове функции. Рекомендуется указывать в объявлении функции передаваемые по ссылке аргументы. Попробуйте выключить эту опцию и убедиться, что ваши скрипты правильно работают без нее и что они будут работать с будущими версиями языка (вы будете получать предупреждение каждый раз, когда вы будете пользоваться этой возможностью).
Передача аргументов по ссылке во время вызова функции была объявлена устаревшей из соображений чистоты кода. Функция может менять свои аргументы недокументированным способом, если бы аргумент не объявлялся передаваемым по ссылке. Чтобы избежать побочных эффектов, лучше явно указывать, какие аргументы передаются по ссылке только при объявлении функции.
См. также Подробное описание ссылок.
Список изменений для allow_call_time_pass_reference Версия Описание 5.4.0 Удалена из PHP. 5.3.0 Генерирует ошибку уровня E_DEPRECATED.5.0.0 Устарела и генерирует ошибку уровня E_COMPILE_WARNING. -
expose_phpboolean -
Выдает факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7). Идентификаторы логотипов также показываются, таким образом, при добавлении их к ссылке на сайте с PHP будет показан соответствующий логотип (например, » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Отключение данной опции также влияет на вывод функции phpinfo(), в этом случае логотип PHP и информация о разработчиках, принимавших участие в разработке PHP, отображаться не будет.
Смотрите также php_logo_guid() и phpcredits().
-
disable_functionsstring -
Эта директива позволяет отключить некоторые функции по причинам безопасности. Она принимает список имен функций, разделенный запятыми. disable_functions не подвержена влиянию безопасного режима.
Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.
Эта директива должна быть установлена в php.ini. Например, ее нельзя использовать в httpd.conf.
-
disable_classesstring -
Эта директива позволяет отключить некоторые классы по
причинам безопасности. Она принимает
список имен классов, разделенных запятыми. disable_classes
не подвержена влиянию безопасного режима.
Эта директива должна быть установлена в php.ini. Например,
ее нельзя использовать в httpd.conf.
Замечание: Замечание о доступности
Эта директива стала доступной в PHP 4.3.2 -
zend.ze1_compatibility_modeboolean -
Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов (объекты без свойств приводятся к
FALSEили 0) и сравнение объектов. В этом режиме объекты по умолчанию передаются по значению вместо ссылки.См. также раздел Переход с PHP 4 на PHP 5.
ВниманиеЭта возможность была помечена УСТАРЕВШЕЙ и БЫЛА УДАЛЕНА в версии PHP 5.3.0.
-
zend.multibyteboolean -
Разрешает парсинг исходных файлов в многобайтных кодировках.
-
zend.script_encodingstring -
Данное значение будет использовано, только при отсутствии директивы declare(encoding=...) в начале скрипта.
-
zend.signal_checkboolean -
Определяет, нужно ли проверять замененные обработчики сигналов при завершении скрипта.
-
detect_unicodeboolean -
Определяет, нужно ли проверять BOM (Byte Order Mark, метка порядка байт) и корректность многобайтных символов в файле. Эта проверка производится до вызова __halt_compiler(). Доступна только в режиме Zend Multibyte.
-
exit_on_timeoutboolean -
Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошел тайм-аут исполнения скрипта PHP. Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые расширения в несогласованном состоянии. По завершении процесса все неснятые блокировки или память будут очищены.
Ограничения ресурсов
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| memory_limit | "128M" | PHP_INI_ALL | "8M" до PHP 5.2.0, "16M" в PHP 5.2.0 |
Краткое разъяснение конфигурационных директив.
-
memory_limitinteger -
Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.
В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: --enable-memory-limit . Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.
Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.
См. также: max_execution_time.
Настройка производительности
| Название | Значение по умолчанию | Место изменения | История изменений |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. |
Краткое разъяснение конфигурационных директив.
-
realpath_cache_sizeinteger -
Определяет размера кэша realpath, используемого в PHP. Это значение должно быть увеличено на системах, в которых PHP открывает большое количество файлов соответственно количеству выполняемых файловых операций.
-
realpath_cache_ttlinteger -
Время (в секундах) в течение которого будет использован кэш realpath для указанного файла или директории. Для систем с редко меняющимися файлайми это значение можно увеличить.
Обработка данных
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| 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_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_INI_ALL в PHP <= 4.2.3. Удалена в PHP 5.4.0. |
| 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. Помечена устаревшей в PHP 5.3.0. Удалена в PHP 5.4.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_varsboolean -
Если включено, переменные окружения, GET, POST, Cookie и серверные переменные могут быть получены через глобальные ассоциативные массивы $_ENV, $_GET, $_POST, $_COOKIE и $_SERVER.
Обратите внимание, что начиная с версии PHP 4.0.3,
track_varsвсегда включена. -
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_jitboolean -
Когда включено, переменные SERVER и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведет к росту производительности.
Директивы PHP register_globals, register_long_arrays и register_argc_argv должны быть выключены для правильной работы этой директивы. Начиная с версии PHP 5.1.3 стало необязательно выключать register_argc_argv.
ВниманиеИспользование переменных SERVER и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.
-
register_globalsboolean -
Регистрировать или нет переменные 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_argvboolean - Сообщает PHP, следует ли объявлять переменные argv и argc (которые будут содержать GET-информацию). См. также Использование PHP в командной строке.
-
register_long_arraysboolean -
Сообщает PHP, следует ли регистрировать устаревшие длинные
предопределенные
переменные типа $HTTP_*_VARS.
Если включена (по умолчанию), то длинные предопределенные переменные
PHP, например $HTTP_GET_VARS, будут объявлены.
Если вы их не используете, рекомендуем отключить их из соображений
производительности. Вместо них следует использовать суперглобальные
массивы, например $_GET.
Эта директива стала доступна с версии PHP 5.0.0.
Внимание
Данная возможность была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.
-
enable_post_data_readingboolean - При отключении этой опции влечет суперглобальные переменные $_POST и $_FILES не будут заполняться. Единственным способом прочесть POST-данные будет чтение обертки потока php://input. Это может оказаться полезным при проксировании запросов или обработки POST-данных способом, более эффективно использующим память.
-
post_max_sizeinteger -
Устанавливает максимально допустимый размер данных, отправляемых методом
POST. Это значение также влияет на загрузку файлов.
Для загрузки больших файлов это значение должно быть больше значения
директивы
upload_max_filesize.
Если дополнительно используется ограничение памяти, memory_limit также влияет на
загрузку файлов. В сущности,
memory_limit должна быть
больше чем
post_max_size. Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ. Если размер POST-данных больше чем post_max_size, суперглобальные переменные $_POST и $_FILES будут пустыми. Это можно отследить различными способами, например передав $_GET переменную в скрипт, обрабатывающий данные, т.е. <form action="edit.php?processed=1">, а затем проверить, установлена ли переменная $_GET['processed'].Замечание:
PHP разрешает сокращения значений бит, включая K (кило), M (мега) и G (гига). PHP автоматически преобразует все эти сокращения. Будьте осторожны с превышением диапазона 32-битных целых значений (если вы используете 32-битную версию), так как это приведет к ошибке вашего скрипта.
-
gpc_orderstring -
Устанавливает порядок обработки переменных GET/POST/COOKIE. Значением по умолчанию для этой директивы является "GPC". Установка ее в "GP", к примеру, приведет к тому, что PHP будет полностью игнорировать cookies и перезапишет любую GET-переменную POST-переменной с таким же именем.
Замечание:
Эта опция недоступна в PHP 4. Вместо нее используйте variables_order.
-
auto_prepend_filestring -
Определяет имя файла, который будет автоматически обрабатываться перед основным файлом. Файл вызывается так, будто он был подключен при помощи функции require, так что include_path также используется.
Специальное значение none отключает эту директиву.
-
auto_append_filestring -
Определяет имя файла, который будет автоматически обрабатываться после основного файла. Файл вызывается так, будто он был подключен при помощи функции require, так что include_path тоже используется.
Специальное значение none отключает эту директиву.
Замечание: Если скрипт завершает работу при помощи exit(), auto-append НЕ выполняется.
-
default_mimetypestring -
-
default_charsetstring -
PHP всегда отправляет кодировку по умолчанию в заголовке Content-Type. Чтобы отключить отправку кодировки, просто установите ее пустой строкой.
-
always_populate_raw_post_databoolean -
Всегда заполнять переменную $HTTP_RAW_POST_DATA, содержащую "сырые" POST-данные. В противном случае, переменная будет заполнена только при неопознанном MIME типе данных. Однако, предпочтительным способом доступа к "сырым" POST-данным является php://input. $HTTP_RAW_POST_DATA недоступна при enctype="multipart/form-data".
-
allow_webdav_methodsboolean -
Разрешает обработку 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 | |
| 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 | |
| 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.fix_pathinfo | "1" | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | Доступна с версии PHP 4.2.0. PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | Доступна с версии PHP 4.2.0. PHP_INI_ALL до версии PHP 5.2.1. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | Доступна с версии PHP 4.3.0. |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
Краткое разъяснение конфигурационных директив.
-
include_pathstring -
Указывает список директорий, в которых функции require, include, fopen(), file(), readfile() и file_get_contents() ищут файлы. Формат соответствует формату системной переменной окружения PATH: список директорий, разделенных двоеточием в Unix или точкой с запятой в Windows.
При поиске подключаемых файлов PHP отдельно рассматривает каждое значение в include_path. Он проверяет первый путь, если файл в нем не найден, то он переходит к следующему, и так до тех пор, пока не найдет подключаемый файл, либо вернет предупреждение или ошибку. Вы можете изменить ваш 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 каждый раз проверять текущую директорию при подключении каждого файла.
-
open_basedirstring -
Ограничивает указанным деревом каталогов файлы, которые могут быть открыты с помощью PHP, включая сам файл. Эта директива НЕ подвержена влиянию безопасного режима.
Когда скрипт пытается открыть файл, например, с помощью функции fopen() или gzopen(), проверяется местонахождение файла. Если файл находится вне указанного дерева каталогов, 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в качестве разделителя путей, не зависящего от операционной системы. -
doc_rootstring -
"Корневая директория" PHP на этом сервере. Используется только в случае, если не пустая. Если PHP сконфигурирован с безопасный режим, файлы вне этой директории не обрабатываются. Если PHP не был скомпилирован с FORCE_REDIRECT, вам следует установить doc_root, если вы используете PHP в качестве CGI под любым веб-сервером (кроме IIS). Альтернативой является использование конфигурационной директивы cgi.force_redirect, речь о которой идет ниже.
-
user_dirstring -
Базовое имя директории, используемой в домашнем каталоге пользователя для PHP файлов, например, public_html.
-
extension_dirstring -
В какой директории PHP должен искать динамически загружаемые расширения. См. также: enable_dl и dl().
-
extensionstring -
Какие динамически загружаемые расширения должны быть загружены при старте PHP.
-
zend_extensionstring -
Абсолютный путь до динамически загружаемого расширения Zend (например, APD), которое должно быть загружено при старте 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_lineboolean -
Контролирует, нужно ли проверять первую строку CGI PHP-скрипта на содержание #! (shebang). Эта строка может быть необходима, если скрипт должен поддерживать как отдельный запуск, так и с помощью PHP CGI. PHP в режиме CGI пропускает эту строку и игнорирует ее содержимое, если данная директива включена.
-
cgi.fix_pathinfoboolean -
Обеспечивает поддержку правильных 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_redirectboolean -
Директива cgi.force_redirect необходима для обеспечения безопасности во время работы PHP в качестве CGI под большинством веб-серверов. Если оставить ее неопределенной, по умолчанию PHP включает эту директиву. Вы можете выключить ее на свой страх и риск.
Замечание:
Пользователям Windows: При использовании IIS эта опция должна быть отключена. Тоже самое необходимо для OmniHTTPD и Xitami.
-
cgi.redirect_status_envstring -
Если cgi.force_redirect включена и вы работаете не под веб-сервером Apache или Netscape (iPlanet), вам может понадобится установить переменную окружения, которую будет искать PHP чтобы убедиться, что он может продолжать выполнение.
Замечание:
Установка этой переменной может повлечь за собой проблемы с безопасностью, так что вы должны знать, что вы делаете.
-
cgi.rfc2616_headersint -
Сообщает PHP, какой тип заголовков использовать при отправке кода ответа HTTP. Если установлено в 0, PHP отправляет заголовок "Status:", который поддерживается Apache и другими веб-серверами. Если установлено в 1, PHP отправляет заголовок, соответствующий » RFC 2616. Оставьте в значении 0, если вы не уверены в том, что это значит.
-
fastcgi.impersonatestring -
FastCGI под IIS (в ОС на базе WINNT) поддерживает возможность имперсонации прав безопасности вызывающего клиента. Это позволяет IIS определить контекст безопасности, в котором выполняется запрос. mod_fastcgi под Apache на текущий момент не поддерживает эту возможность (03/17/2002). Установите в 1 при работе под IIS. Значение по умолчанию - ноль.
-
fastcgi.loggingboolean -
Включает логирование SAPI при использовании FastCGI. Логирование включено по умолчанию.
Закачивание Файлов
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.0.3. |
| 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 | PHP_INI_ALL в PHP <= 4.2.3. |
| max_file_uploads | 20 | PHP_INI_SYSTEM | Доступна с версии PHP 5.2.12. |
Краткое разъяснение конфигурационных директив.
-
file_uploadsboolean или integer -
Разрешать или не разрешать закачивание файлов. См. также директивы upload_max_filesize, upload_tmp_dir и post_max_size.
Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ. -
upload_tmp_dirstring -
Временная директория, используемая для хранения файлов во время закачивания. Должна быть доступна для записи пользователю, от имени которого запущен PHP. Если не указана, используется директория по умолчанию для вашей системы.
Если к указанной директории нет прав на запись, PHP откатится обратно к системной временной директории, используемой по умолчанию. Если включена директива open_basedir, то для успешной загрузки файлов системная директория по умолчанию должна быть разрешена.
-
upload_max_filesizeinteger -
Максимальный размер закачиваемого файла.
Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ. -
max_file_uploadsinteger -
Максимально разрешенное количество одновременно закачиваемых файлов. Начиная с PHP 5.3.4, пустые поля загрузки не рассматриваются этим ограничением.
Общий SQL
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM |
Краткое разъяснение конфигурационных директив.
-
sql.safe_modeboolean -
Если включена, функции соединения с базой данных, использующие значения по умолчанию, будут использовать эти значения вместо передаваемых аргументов. Для значений по умолчанию смотрите документацию по функциям подключения соответствующей базы данных.
Особые настройки для ОС Windows
| Имя | По умолчанию | Меняемо | Список изменений |
|---|---|---|---|
| windows_show_crt_warning | "0" | PHP_INI_ALL | Доступна начиная с PHP 5.4.0. |
Краткое разъяснение конфигурационных директив.
-
windows_show_crt_warningboolean -
При включении данной директивы будут отображаться предупреждения Windows CRT. Данные предупреждения ранее показывались по умолчанию до версии PHP 5.4.0.
Adding multiple directories to open_basedir:
open_basedir = "/var/www/htdocs/:/var/www/tmp/" adds both paths /var/www/htdocs/ and /var/www/tmp/. Do not forget the trailing slash, otherwise the last directory will be considered as a prefix (< 5.3.4).
On Windows you use ; as the seperator.
If you need to use a path in your include_path that has a space in it - I found that I could make it work (in windows anyway) by setting a path like this
L:\Information Technology\Resources\lib\
in the include path like this listed below
include_path = ".;L:\Information" " Technology\Resources\lib\"
Note that there is no way to disable eval() work by using disable_functions directive, because eval() is a language construct and not a function.
Many people advise to disable such potentially-insecure functions like system(), exec(), passthru(), eval() and so on in php.ini when not running in safe mode, but eval() would still work even it listed in disable_functions.
This is a possible solution for a problem which seems to be a php-ini-problem but is not.
If a $_POST is used with large fields e.g. textarea's with more than 120kb characters php returns a blank screen, even if the max_post_size is 8M.
This problem may be caused by an apache-module SecFilter.
Adding the following lines to the .htaccess solves the problem.
SecFilterEngine Off
SecFilterScanPOST Off
I know this is not a php-issue, but i'm still posting it here since it looks like it is a php-problem and I did not find any sites or forums offering this solution.
Amusingly, the include_path logically includes the current directory of the running file as the last entry all the time anyways, so part of the business about shoving "." into the include_path is spurious -- it's "there" on the end all the time, at least in the 5.2.12 source (see main/fopen_wrappers.c around line 503).
This one had me goin' for a while.
For 'short_open_tag',
though it is marked as PHP_INI_ALL in changable column,
you should note the CHANGE_LOG column also:
PHP_INI_ALL in PHP <= 4.0.0.
PHP_INI_PERDIR in PHP < 5.3.0
So as of 4.0, it will not work if you wanna use
ini_set('short_open_tag') to change it's value on the fly.
Note that on some Unix systems (i.e. PHP 5.1.6 on Centos 5.2) include_path in php.ini should NOT be quoted.
For example, instead of
include_path='.:/usr/share/php'
use
include_path=.:/usr/share/php
Using quotes does not cause any error message, but all of your require_once() directives will fail (indicating that file could not be opened) - unless full path to target file is provided.
When display_errors is off, PHP will send an HTTP 500 result header on a fatal error. This is usefull when working with AJAX applications.
A handy trick to pick up parse errors in test_file.php if you can't set display_errors in php.ini or use .htaccess:
<?php
error_reporting (E_ALL);
ini_set ('display_errors', true);
include('./test_file.php');
?>
"post_max_size"
"[..]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."
using PHP 4.4.8 it seems that only the $_POST array will be empty in case of the file is largen than post_max_size.
so above mentioned method does not work in my case.
i need to use $_POST['processed'] instead of $_GET['processed']
If you are having trouble getting the auto_prepend_file to work with the command line interface make sure that you have set it in the cli specific php.ini and that the read permission is set correctly for that php.ini file.
If you want to display the upload limit without knowing the server configuration, this may be useful:
<?php
function let_to_num($v){ //This function transforms the php.ini notation for numbers (like '2M') to an integer (2*1024*1024 in this case)
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)){
case 'P':
$ret *= 1024;
case 'T':
$ret *= 1024;
case 'G':
$ret *= 1024;
case 'M':
$ret *= 1024;
case 'K':
$ret *= 1024;
break;
}
return $ret;
}
$max_upload_size = min(let_to_num(ini_get('post_max_size')), let_to_num(ini_get('upload_max_filesize')));
echo "Maximum upload file size is ".($max_upload_size/(1024*1024))."MB.";
?>
Do note however that this limit is not completely reliable; there are other factors which need to be taken into account, such as any other $_POST data and their size, the memory limit, and the script time limit. This does, however, give some rough limit, and helps you avoid "Doh!" problems where you can't figure out why your file won't upload. :)
While the manual says that the file specified by auto_prepend_file is included as if it were called by include(), in fact the file is included as if it were called by require().
In other words, if PHP cannot find the file that you specify with auto_prepend_file, it will throw a fatal error.
register_long_arrays has a very odd behavior (at least in PHP 5.2):
With register_long_arrays=Off the $GLOBALS array will not contain [_SERVER] and [_REQUEST]. They are accessible as superglobals ($_SERVER, $_REQUEST), but they disappear from the $GLOBALS array!
to make sure that all requests use SSL you can use this in a file that is set for auto_prepend_file. This ensures that all requests are SSL
<?php
if(empty($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )
header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}") and exit();
?>
I wish the documentation was more clear as to whether the arg_separator.output character is automatically encoded when PHP outputs it. In other words, is "&" valid or do I need to specify the encoded character "&"? It would make sense to specify only "&" and hope that it is encoded as needed. That way the value could be read by other functions and encoded only when output to HTML, rather than having to test whether it is already encoded and decode it when necessary (for header redirection for example)
"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
Starting with PHP 4.4.0 (at least PHP version 4.3.10 did have old, documented behaviour) interpretation of value of "session.save_path" did change in conjunction with "save_mode" and "open_basedir" enabled.
Documented ( http://de.php.net/manual/en/ref.session.php#ini.session.save-path ):
Values of "session.save_path" should or may be **without** ending slash.
For instance:
<?php
// Valid only *before* PHP 4.4.0:
ini_set( "session.save_path", "/var/httpd/kunde/phptmp" );
?> will mean:
The directory "/var/httpd/kunde/phptmp/" will be used to write data and therefore must be writable by the web server.
Starting with PHP 4.4.0 the server complains that "/var/httpd/kunde/" is not writable.
Solution: Add an ending slash in call of ini_set (or probably whereever you set "session.save_path"), e.g.:
<?php
// Note the slash on ".....phptmp/":
ini_set( "session.save_path", "/var/httpd/kunde/phptmp/" );
?>
Hope, that does help someone.
Warning, if you change upload_max_filesize, please note that both post_max_size and memory_limit directives may have to change too.
I did a little experimentation on the behaviour of auto_prepend_file as the order of access wasn't clear to me from the documentation.
1. Apache checks to see if the target file exists.
2. The prepend file is called
3. The target file is called
This means that you can use auto_prepend_file to change the target file before you access it however you can't generate new files.
Please be mindful, that if you plan on re-configuring / recompiling to add --enable-memory-limit support, you may need to run a 'make clean' before you run 'make'. Otherwise, you may end up with a phpinfo() that shows up with --enable-memory-limit as a configure parameter, but the memory_get_usage() function will still force a fatal error.
