Php ini loaded file: примеры (PHP)
php_ini_loaded_file: string|falseФункция php_ini_loaded_file() возвращает строку, содержащую путь к основному файлу конфигурации PHP (php.ini), который был загружен интерпретатором во время запуска. Эта функция не принимает никаких аргументов. Её вызов всегда происходит без параметров.
Использование функции актуально в ситуациях, когда требуется точно определить, какой именно файл php.ini используется сервером. Это полезно при отладке, когда на сервере может находиться несколько конфигурационных файлов, при администрировании серверов или создании скриптов для анализа окружения. Функция возвращает полный абсолютный путь к файлу или FALSE, если файл не был загружен.
Функция вызывается без параметров. Её результат зависит от окружения.
Пример получения пути к конфигурационному файлу.
$ini_path = php_ini_loaded_file();
echo $ini_path;/etc/php/8.2/apache2/php.iniИногда функция может вернуть FALSE.
$iniFile = php_ini_loaded_file();
if ($iniFile === false) {
echo 'Основной файл php.ini не загружен.';
} else {
echo 'Загруженный файл: ' . htmlspecialchars($iniFile);
}Загруженный файл: /usr/local/etc/php.iniРяд других функций предоставляет информацию о конфигурации PHP.
Функция php_ini_scanned_files() возвращает список дополнительных конфигурационных файлов (.ini), загруженных из директории, указанной в директиве --with-config-file-scan-dir. Она полезна, когда нужно увидеть все загруженные настройки из дополнительных файлов. В отличие от php_ini_loaded_file, она перечисляет дополнительные файлы, а не основной.
Функция get_cfg_var() получает значение конкретной опции конфигурации. Например, get_cfg_var('cfg_file_path') часто возвращает путь к основному php.ini. Однако её поведение зависит от настройки PHP_INI_SYSTEM и может отличаться от php_ini_loaded_file, которая всегда возвращает фактически загруженный файл.
php_ini_loaded_file является предпочтительным способом для точного определения пути к основному загруженному файлу конфигурации.
Php ini loaded file в Python
В Python нет прямой аналогии, так как конфигурация интерпретатора обычно задается аргументами командной строки или переменными окружения. Информацию можно получить через модуль sys.
import sys
print(sys.prefix) # Путь к установке Python
# Конкретного файла конфигурации, аналогичного php.ini, нет./usrВ Node.js конфигурация задается аргументами запуска или переменными окружения. Для получения аргументов используется process.argv.
console.log(process.execPath); // Путь к исполняемому файлу Node.js
// Аналога единого конфигурационного файла нет./usr/local/bin/nodePhp ini loaded file в MySQL
В СУБД MySQL для получения путей к конфигурационным файлам используется системная переменная или команда.
SHOW VARIABLES LIKE 'config_file';+---------------+----------------------+
| Variable_name | Value |
+---------------+----------------------+
| config_file | /etc/mysql/my.cnf |
+---------------+----------------------+В отличие от PHP, где функция возвращает конкретный загруженный файл, в других языках это часто информация об установке или аргументах.
Ошибкой является передача аргументов функции, которая их не принимает.
// Неправильно
$path = php_ini_loaded_file('/dummy');
// Вызовет предупреждение.Сравнение с == вместо === может привести к неверной интерпретации результата, если путь пустой строкой (маловероятно, но возможно) или при нестрогом сравнении с false.
// Ненадежная проверка
if (!php_ini_loaded_file()) {
echo 'Файл не найден';
}
// Более корректно
if (php_ini_loaded_file() === false) {
echo 'Файл не найден';
}Прямое использование результата без проверки может вызвать проблемы.
$path = php_ini_loaded_file();
echo basename($path); // Если $path === FALSE, будет ошибка.Функция php_ini_loaded_file() была добавлена в PHP 5.2.4. С момента своего появления её поведение оставалось стабильным. В PHP 8 не было внесено изменений в сигнатуру или основную логику работы этой функции. Она по-прежнему не принимает аргументов и возвращает строку с путём или FALSE. Разработчики могут полагаться на её постоянство в новых версиях языка.
Для получения директории, в которой расположен php.ini, можно использовать dirname().
$iniFile = php_ini_loaded_file();
if ($iniFile !== false) {
$configDir = dirname($iniFile);
echo "Директория с конфигурацией: $configDir";
}Директория с конфигурацией: /etc/php/8.2/apache2Комбинирование с parse_ini_file() позволяет проанализировать загруженный файл.
$iniPath = php_ini_loaded_file();
if ($iniPath && file_exists($iniPath)) {
$configArray = parse_ini_file($iniPath);
if (isset($configArray['max_execution_time'])) {
echo "max_execution_time = " . $configArray['max_execution_time'];
}
}max_execution_time = 30При запуске скрипта из командной строки может использоваться другой файл php.ini. Это можно обнаружить.
echo "Веб-сервер: " . php_ini_loaded_file() . "\n";
// Запуск скрипта через CLI: php script.php
// Результат может отличаться.Функция полезна для аудита и логирования окружения.
error_log('Скрипт выполнен с конфигурацией из: ' . php_ini_loaded_file());Можно проверить доступность файла для чтения.
$ini = php_ini_loaded_file();
if ($ini && is_readable($ini)) {
echo "Конфигурационный файл доступен для чтения.";
} else {
echo "Нет доступа к файлу конфигурации.";
}