Ini get: примеры (PHP)

Использование функции ini_get в PHP 8: примеры и рекомендации
Раздел: Конфигурация PHP
ini_get(string $option): string|false
Назначение и параметры функции ini_get

Функция ini_get() возвращает значение конфигурационной настройки PHP. Она используется для получения текущих значений директив из php.ini во время выполнения скрипта.

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

Синтаксис и параметры

Функция принимает один обязательный параметр:

  • $option (string) — имя конфигурационной директивы, значение которой требуется получить

Функция возвращает строковое значение настройки, либо false если директива не существует (до PHP 8.1), либо пустую строку если настройка существует, но не имеет значения.

Базовые примеры использования
Получение базовых настроек
echo ini_get('max_execution_time');
30
Проверка несуществующей директивы
var_dump(ini_get('несуществующая_директива'));
bool(false)
Получение булевых значений
echo ini_get('display_errors');
1
Проверка размера загружаемых файлов
echo ini_get('upload_max_filesize');
2M
Похожие функции в PHP

ini_get_all() — возвращает все доступные конфигурационные настройки или настройки конкретного расширения. Полезна для отладки и анализа полной конфигурации.

print_r(ini_get_all('date'));

get_cfg_var() — получает значение конфигурационной опции, но возвращает только те значения, которые установлены в php.ini или через конфигурационный файл Apache. В отличие от ini_get(), игнорирует значения, измененные во время выполнения.

echo get_cfg_var('max_execution_time');

ini_set() — устанавливает новое значение конфигурационной настройки на время выполнения скрипта.

ini_set('display_errors', '0');

ini_restore() — восстанавливает исходное значение настройки.

Аналоги в других языках

Ini get в Python

В Python нет прямой аналогии, но можно использовать модуль sys и configparser:

import sys
print(sys.getrecursionlimit())
1000
JavaScript (Node.js)

В Node.js используются переменные окружения и аргументы командной строки:

console.log(process.env.NODE_ENV);
console.log(process.argv);
development
['node', 'script.js']

Ini get в MySQL

Для получения системных переменных используется оператор SHOW VARIABLES:

SHOW VARIABLES LIKE 'max_connections';
max_connections | 151
C# (.NET)

В C# используются классы конфигурации:

string timeout = ConfigurationManager.AppSettings["RequestTimeout"];
Типичные ошибки и проблемы
Проверка существования директивы

Неправильная проверка возвращаемого значения до PHP 8.1:

// Проблемный код (до PHP 8.1)
$value = ini_get('unknown_directive');
if ($value) { // Ложное срабатывание если возвращается false
    echo 'Директива существует';
}
Ничего не выводится, но логика нарушена
Неправильное сравнение булевых значений
// Неправильно
if (ini_get('display_errors') == true) {
    echo 'Ошибки выводятся';
}
// Правильно
if (filter_var(ini_get('display_errors'), FILTER_VALIDATE_BOOLEAN)) {
    echo 'Ошибки выводятся';
}
Игнорирование пустых значений
$value = ini_get('some_empty_directive');
if (empty($value)) {
    echo 'Значение отсутствует или директива не существует';
}
Изменения в последних версиях PHP

PHP 8.1.0: Функция теперь возвращает null вместо false для несуществующих директив. Это изменение улучшает строгую типизацию.

// PHP 8.0 и ранее
var_dump(ini_get('unknown')); // bool(false)

// PHP 8.1 и новее
var_dump(ini_get('unknown')); // NULL

PHP 7.0.0: Добавлена поддержка массивов в качестве возвращаемых значений для некоторых директив, таких как extension_dir.

PHP 5.3.0: Улучшена обработка директив, которые могут иметь значение off или пустую строку.

Расширенные примеры применения
Проверка доступности функций
Пример php
$disabled = ini_get('disable_functions');
$is_exec_disabled = stripos($disabled, 'exec') !== false;
echo $is_exec_disabled ? 'exec отключен' : 'exec доступен';
Анализ настроек безопасности
Пример php
$safe_mode = ini_get('safe_mode');
$open_basedir = ini_get('open_basedir');
$allow_url_fopen = ini_get('allow_url_fopen');

$security_report = [
    'safe_mode' => $safe_mode,
    'open_basedir' => $open_basedir ?: 'Не ограничен',
    'allow_url_fopen' => $allow_url_fopen
];
print_r($security_report);
Оптимизация на основе конфигурации
Пример php
$memory_limit = ini_get('memory_limit');
$int_limit = (int) $memory_limit;

if ($int_limit < 128) {
    ini_set('memory_limit', '128M');
    echo 'Лимит памяти увеличен';
}
Проверка настроек сессии
Пример php
$session_gc = ini_get('session.gc_probability');
$session_lifetime = ini_get('session.gc_maxlifetime');

if ($session_gc == 0) {
    echo 'Сборщик мусора сессий отключен';
}

$hours = floor($session_lifetime / 3600);
$minutes = floor(($session_lifetime % 3600) / 60);
echo "Время жизни сессии: {$hours}ч {$minutes}м";
Динамическая конфигурация загрузки файлов
Пример php
$upload_max = ini_get('upload_max_filesize');
$post_max = ini_get('post_max_size');

// Конвертация в байты
function to_bytes($value) {
    $units = ['K' => 1024, 'M' => 1048576, 'G' => 1073741824];
    $unit = strtoupper(substr($value, -1));
    $number = (float) substr($value, 0, -1);
    return isset($units[$unit]) ? $number * $units[$unit] : $number;
}

$upload_bytes = to_bytes($upload_max);
$post_bytes = to_bytes($post_max);
$actual_limit = min($upload_bytes, $post_bytes);

echo "Максимальный размер загрузки: " . round($actual_limit / 1048576, 2) . " MB";
Проверка настроек вывода ошибок
Пример php
$display_errors = ini_get('display_errors');
$error_reporting = ini_get('error_reporting');
$log_errors = ini_get('log_errors');
$error_log = ini_get('error_log');

$error_config = [
    'display' => $display_errors ? 'Включен' : 'Выключен',
    'reporting_level' => sprintf('0x%08X', $error_reporting),
    'logging' => $log_errors ? 'Включен' : 'Выключен',
    'log_file' => $error_log ?: 'По умолчанию'
];

print_r($error_config);

PHP ini_get function comments

En
Ini get Gets the value of a configuration option