Разработчику. Сборник рецептов PHP
Задавайте вопросы

Чтение конфигурационных переменных

Вернуться назад

Задача

Необходимо получить значение конфигурационной опции PHP.

Решение

Это делается с помощью функции ini_get():

// определяем путь включения:
$include_path = ini_get('include_path');

Обсуждение

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

// помещаем все переменные конфигурации в ассоциативный массив
$vars = ini_get_all();
print_r($vars['include_path']);

Array
(

     [global_value] => .:/usr/local/lib/php/
     [local_value] => .:/usr/local/lib/php/
     [access] => 7


)

Значение global_value берется из файла php.ini; значение local_value принимается во внимание при всех изменениях, сделанных в конфигурационном файле веб-сервера, в любом значимом файле .htaccess и в текущем сценарии. Значение access – это числовая константа, представляющая место, где это значение можно изменить. Они приведены и прокомментированы в таблЗначения параметра access Заметим, что имя ccess слегка вводит в заблуждение, поскольку значения параметров всегда могут быть проверены, но их не всегда можно изменить.

Таблица: Значения параметра access

Значение Константа PHP Значение
1 PHP_INI_USER Любой сценарий, использующий функцию ini_set()
2 PHP_INI_PERDIR Уровень каталогов, используюший .htaccess
4 PHP_INI_SYSTEM Системный уровень, использующий php.ini или httpd.conf
7 PHP_INI_ALL Везде: сценарии, каталоги и система

Если значение равно 6, то установка может быть изменена и на уровне каталогов и на системном уровне (2 + 4 = 6). На самом деле не существует переменных, модифицируемых только на уровне PHP_INI_USER или PHP_INI_PERDIR, но все переменные могут быть изменены на уровне PHP_INI_SYSTEM, поэтому параметр может принимать только значения 4, 6 или 7.

Можно также получить значения параметров, относящихся к определенному расширению, передав имя расширения функции ini_get_all():

// возвращаем только переменные, относящиеся к модулю сеанса
$session = ini_get_all('session');

По соглашению переменные, относящиеся к определенному расширению, имеют префикс в виде имени расширения и точки. Поэтому, например, все переменные сеанса начинаются с session., а все переменные Java начинаются с java..

Функция ini_get() возвращает текущее значение параметра конфигурации, поэтому для проверки исходного значения из файла php.ini применяется функция get_cfg_var():

$original = get_cfg_var('sendmail_from'); // мы изменили наш адрес?

Функция get_cfg_var() возвращает то же значение, которое появляется в элементе global_value массива, возвращаемого функцией ini_get_all().

См. также

Документацию по функции ini_get() на http://www.php.net/ini-get, по функции ini_get_all() на http://www.php.net/ini-get-all и по функции get_cfg_var() на http://www.php.net/get-cfg-var; полный список конфигурационных переменных и условия их изменения на http://www.php.net/function.ini-set.php.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ