Необходимо получить значение конфигурационной опции 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.