Функция читает настройки конфигурационного файла php

Обновлено: 07.07.2024

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

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

Опции языка и прочих настроек
Имя По умолчанию Место изменения Список изменений
short_open_tag"1"PHP_INI_ALLPHP_INI_ALL в PHP <= 4.0.0. PHP_INI_PERDIR в PHP < 5.3.0
asp_tags"0"PHP_INI_PERDIRPHP_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
allow_call_time_pass_reference"1"PHP_INI_PERDIRPHP_INI_ALL в PHP 4.0.0.
disable_functions""php.ini onlyДоступна с версии PHP 4.0.1.
disable_classes""php.ini onlyДоступна с версии PHP 4.3.2.
expose_php"1"Только php.ini
zend.ze1_compatibility_mode"0"PHP_INI_ALLДоступна с версии PHP 5.0.0. Удалена в PHP 5.3.0
zend.multibyte"0"PHP_INI_ALLДоступна с версии PHP 5.4.0
detect_unicode"1"PHP_INI_ALLДоступна с версии PHP 5.1.0. Эта возможность устарела и будет обязательно удалена в будущем.

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

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

Замечание:

Эта директива также влияла на сокращение всегда включена.

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

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

Замечание:

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

variables_order string - Устанавливает порядок обработки переменных 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_order string - Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.

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

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

Директивы PHP register_globals, register_long_arrays и register_argc_argv должны быть выключены для правильной работы этой директивы. Начиная с версии PHP 5.1.3 стало необязательно выключать register_argc_argv.

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

Регистрировать или нет переменные 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 эта возможность считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.

register_argc_argv boolean - Сообщает PHP, следует ли объявлять переменные argv и argc (которые будут содержать GET-информацию). Смотрите также Использование PHP в командной строке. Эта директива стала доступна с версии PHP 4.0.0 и до этого была всегда включена.

С версии PHP 5.3.0 эта возможность считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.

enable_post_data_reading boolean - При отключении этой опции влечет суперглобальные переменные $_POST и $_FILES не будут заполняться. Единственным способом прочесть POST-данные будет чтение обертки потока php://input. Это может оказаться полезным при проксировании запросов или обработки POST-данных способом, более эффективно использующим память.

post_max_size integer - Устанавливает максимально допустимый размер данных, отправляемых методом 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-битную версию), так как это приведет к ошибке вашего скрипта.

Замечание:

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

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

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

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

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

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

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

always_populate_raw_post_data boolean -

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

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

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

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

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

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

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

В 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 в качестве разделителя путей, не зависящего от операционной системы.

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

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

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

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

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

Вариант zend_extension для расширений, скомпилированных с отладочной информацией.

zend_extension_debug_ts string -

Вариант zend_extension для потокобезопасных расширений, скомпилированных с отладочной информацией.

Вариант zend_extension для потокобезопасных расширений.

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

Замечание:

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

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

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

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

Конфигурационные Опции Закачивания Файлов
Имя По умолчанию Место изменения Список изменений
file_uploads"1"PHP_INI_SYSTEMPHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.0.3.
upload_tmp_dirNULLPHP_INI_SYSTEM
upload_max_filesize"2M"PHP_INI_PERDIRPHP_INI_ALL в PHP <= 4.2.3.
max_file_uploads20PHP_INI_SYSTEMДоступна с версии PHP 5.2.12.

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

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

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

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

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

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

Максимально разрешенное количество одновременно закачиваемых файлов. Начиная с PHP 5.3.4, пустые поля загрузки не рассматриваются этим ограничением.

Общий SQL

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

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

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

phpinfo(): получить информацию о PHP

Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:

Затем заходите на эту страницу через браузер. И все.

Много информации

Много информации

Настройка PHP: Как работает php.ini

PHP имеет ряд настраиваемых параметров. Он также имеет расширения или « плагины », которые имеют отдельные параметры. Большинство из них содержится в « конфигурационных файлах » с расширениями .ini . Википедия сообщает нам, что префикс был получен от сокращенной версии “initialization” . В любом случае эта конвенция распространяется и на PHP .

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

Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:

Все, что размещено в php.ini после точки с запятой ( ; ), не обрабатывается, а рассматривается как комментарий. Объявления, похожие на строку memory_limit , закомментированы. Если значение не указано, удалено или закомментировано, то PHP использует значение по умолчанию.

Значения параметров конфигурации PHP, полезные для WordPress разработчиков

Лично мне регулярно приходится сталкиваться со значениями php info файла для max_execution_time , memory_limit , upload_max_filesize и post_max_size . Существуют сотни значений, которые устанавливаются в файле php.ini и файлах различных расширений, с которыми работает PHP . Но только с этими четырьмя параметрами мне регулярно приходится иметь дело. Краткое описание каждого из них:

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

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

Я использую nano , чтобы открыть файл php info по адресу /etc/php5/fpm/php.ini .

Конфигурация с помощью php.ini и phpinfo()

В файле php.ini содержится много других параметров. Вы можете увидеть почти все из них, запустив команду phpinfo() . Но в основном требуется изменить только небольшой набор значений. Все остальное я оставляю на усмотрение мудрых разработчиков PHP и других экспертов по конфигурации промежуточного сервера. Но мне нравится понимать то, как они работают и как работать с ними. Надеюсь, это руководство оказалось полезным для вас. Всего наилучшего!

Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, дизлайки, отклики, подписки, лайки огромное вам спасибо!

Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, подписки, лайки, отклики, дизлайки низкий вам поклон!

Класс-помощник для работы с INI-файлами. Класс реализует шаблон проектирования "Строитель". В представленном классе идет реализация функционала для работы с INI-файлами. В качестве базового функционала представлено создание, добавление и чтение секций, добавление и удаление ключей и другой функционал.

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

В конструкторе метода укажем путь к файлу (для создания) и тип сканирования, а также вызовем метод получения структуры файла:

Метод получения структуры файла выглядит следующим образом:

Метод parse_ini_file получает в качестве аргументов путь к файлу, флаг получения многомерного массива и типа сканирования. Мы ставим по умолчанию флаг многомерного массива как true , так как нам проще работать с такими массивами. Тип сканирования может быть:

INI_SCANNER_NORMAL (по умолчанию в PHP)

При INI_SCANNER_RAW значения опций (ключ => значение) не будут обрабатываться. Также с версии PHP 5.6.1 завезли тип INI_SCANNER_TYPED . В этом режиме типы boolean, null и integer будут, по возможности, сохраняться. Строковые значения "true" , "on" и "yes" будут преобразованы в TRUE . "false" , "off" , "no" и "none" в FALSE . "null" преобразуется в NULL . Кроме этого, все числовые строки будут, по возможности, преобразованы к целым числам. Вроде как это лучше, чем остальные варианты, по этому используем его.

Вспомогательные методы

Напишем публичный метод получения всей структуры файла:

Чаще всего необходимо получать какое-то значение или всю секцию файла. Давайте напишем простые методы получения этих значений:

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

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

Теперь сделаем метод, который добавлял бы значения в определенные секцию:

Но не всегда надо добавлять значения, иногда нужно из переназначать. Напишем такой метод:

С добавлением, назначением и чтением мы разобрались, теперь сделаем возможность удаления секции и ключей в секциях:

Обратите внимание, что методы добавления и удаления реализуют шаблон проектирования "Строитель".

Осталось дело за малым - написать метод записи в файл:

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

parse_ini_file() загружает ini-файл, указанный в аргументе filename , и возвращает его настройки в виде ассоциативного массива.

Структура ini-файла похожа на структуру php.ini .

Список параметров

Имя обрабатываемого ini-файла. Если используется относительный путь, он оценивается относительно текущего рабочего каталога, а затем include_path.

Установив параметр process_sections в true , вы получаете многомерный массив, который включает как название отдельных настроек, так и секции. По умолчанию process_sections равен false

Может принимать следующие значения: INI_SCANNER_NORMAL (по умолчанию) или INI_SCANNER_RAW . Если указано значение INI_SCANNER_RAW , то значения опций не будут обрабатываться.

С версии PHP 5.6.1 также можно задать INI_SCANNER_TYPED . В этом режиме типы boolean, null и integer будут, по возможности, сохраняться. Строковые значения "true" , "on" и "yes" будут преобразованы в true . "false" , "off" , "no" и "none" в false . "null" преобразуется в null . Кроме этого, все числовые строки будут, по возможности, преобразованы к целым числам.

Возвращаемые значения

В случае успеха, настройки возвращаются в виде ассоциативного массива ( array ). В случае ошибки возвращается false .

Примеры

Константы (но не "магические константы" вроде __FILE__ ) также могут обрабатываться в ini-файлах, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file() , то константа будет корректно обработана. Только значения опций будут обрабатываться и значение должно быть просто константой. Например:

define ( 'BIRD' , 'Птица додо' );

// Обрабатываем без секций
$ini_array = parse_ini_file ( "sample.ini" );
print_r ( $ini_array );

// Обрабатываем с секциями
$ini_array = parse_ini_file ( "sample.ini" , true );
print_r ( $ini_array );

Результатом выполнения данного примера будет что-то подобное:

<?php
// Простая функция для сравнения результатов
function yesno ( $expression )
return( $expression ? 'Да' : 'Нет' );
>

// Получаем путь к php.ini с помощью функции php_ini_loaded_file(),
// которая доступна с PHP 5.2.4
$ini_path = php_ini_loaded_file ();

// Обрабатываем php.ini
$ini = parse_ini_file ( $ini_path );

// Выводим и сравниваем значения, учтите, что использование get_cfg_var()
// даст одинаковые результаты для используемых здесь значений parsed (загруженное из файла) и loaded (используемое в данный момент)
echo '(parsed) magic_quotes_gpc = ' . yesno ( $ini [ 'magic_quotes_gpc' ]) . PHP_EOL ;
echo '(loaded) magic_quotes_gpc = ' . yesno ( get_cfg_var ( 'magic_quotes_gpc' )) . PHP_EOL ;
?>

Результатом выполнения данного примера будет что-то подобное:

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

Результатом выполнения данного примера будет что-то подобное:

Примечания

Замечание:

Эта функция не имеет никакого отношения к файлу php.ini . К моменту выполнения вашего скрипта, он уже обработан. Эта функция может быть использована для загрузки настроек вашего собственного приложения.

Замечание:

Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").

Замечание: Существует зарезервированные слова, которые нельзя использовать в качестве ключей в ini-файлах. Такими словами являются: null , yes , no , true , false , on , off , none . Значения null , off , no и false преобразуются в "" , а значения on , yes и true в "1" , но только если не используется режим INI_SCANNER_TYPED (доступен с PHP 5.6.1). Символы ?<>|&

!()^" не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.

Замечание:

Записи без знака равенства игнорируются. Например, "foo" игнорируется, тогда как "bar =" обрабатывается и добавляется с пустым значением. Например, в MySQL есть опция "no-auto-rehash", устанавливаемая в my.cnf , которая не имеет значения и игнорируется.

Замечание:

ini-файлы обычно обрабатываются веб-серверами как простой текст и, таким образом, по запросу передаются браузерам. Это означает, что в целях безопасности вы должны либо хранить свои ini-файлы вне корневого каталога документов, либо перенастроить веб-сервер, чтобы они не обслуживались. Невыполнение любого из этих требований может создать угрозу безопасности.

Читайте также: