Php ini loaded file: примеры (PHP)

Использование php_ini_loaded_file для работы с конфигурацией PHP
Раздел: Конфигурация PHP
php_ini_loaded_file: string|false
Основные сведения о функции php_ini_loaded_file

Функция 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.

Функция 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
JavaScript (Node.js)

В Node.js конфигурация задается аргументами запуска или переменными окружения. Для получения аргументов используется process.argv.

console.log(process.execPath); // Путь к исполняемому файлу Node.js
// Аналога единого конфигурационного файла нет.
/usr/local/bin/node

Php 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 'Файл не найден';
}
Игнорирование возможности возврата FALSE

Прямое использование результата без проверки может вызвать проблемы.

$path = php_ini_loaded_file();
echo basename($path); // Если $path === FALSE, будет ошибка.
История изменений функции

Функция php_ini_loaded_file() была добавлена в PHP 5.2.4. С момента своего появления её поведение оставалось стабильным. В PHP 8 не было внесено изменений в сигнатуру или основную логику работы этой функции. Она по-прежнему не принимает аргументов и возвращает строку с путём или FALSE. Разработчики могут полагаться на её постоянство в новых версиях языка.

Расширенные сценарии применения
Определение директории конфигурации

Для получения директории, в которой расположен php.ini, можно использовать dirname().

Пример php
$iniFile = php_ini_loaded_file();
if ($iniFile !== false) {
    $configDir = dirname($iniFile);
    echo "Директория с конфигурацией: $configDir";
}
Директория с конфигурацией: /etc/php/8.2/apache2
Проверка наличия определенной директивы

Комбинирование с parse_ini_file() позволяет проанализировать загруженный файл.

Пример php
$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
Сравнение с конфигурацией CLI

При запуске скрипта из командной строки может использоваться другой файл php.ini. Это можно обнаружить.

Пример php
echo "Веб-сервер: " . php_ini_loaded_file() . "\n";
// Запуск скрипта через CLI: php script.php
// Результат может отличаться.
Логирование информации о конфигурации

Функция полезна для аудита и логирования окружения.

Пример php
error_log('Скрипт выполнен с конфигурацией из: ' . php_ini_loaded_file());
Проверка прав на файл конфигурации

Можно проверить доступность файла для чтения.

Пример php
$ini = php_ini_loaded_file();
if ($ini && is_readable($ini)) {
    echo "Конфигурационный файл доступен для чтения.";
} else {
    echo "Нет доступа к файлу конфигурации.";
}

PHP php_ini_loaded_file function comments

En
Php ini loaded file Retrieve a path to the loaded php.ini file