Ini get: примеры (PHP)
ini_get(string $option): string|falseФункция 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
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
В 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# используются классы конфигурации:
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 8.1.0: Функция теперь возвращает null вместо false для несуществующих директив. Это изменение улучшает строгую типизацию.
// PHP 8.0 и ранее
var_dump(ini_get('unknown')); // bool(false)
// PHP 8.1 и новее
var_dump(ini_get('unknown')); // NULLPHP 7.0.0: Добавлена поддержка массивов в качестве возвращаемых значений для некоторых директив, таких как extension_dir.
PHP 5.3.0: Улучшена обработка директив, которые могут иметь значение off или пустую строку.
$disabled = ini_get('disable_functions');
$is_exec_disabled = stripos($disabled, 'exec') !== false;
echo $is_exec_disabled ? 'exec отключен' : 'exec доступен';$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);$memory_limit = ini_get('memory_limit');
$int_limit = (int) $memory_limit;
if ($int_limit < 128) {
ini_set('memory_limit', '128M');
echo 'Лимит памяти увеличен';
}$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}м";$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";$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);