
При работе с PHP на сервере часто возникает необходимость точно знать, какой php.ini применяется в данный момент. Это особенно важно при конфигурации параметров памяти, времени выполнения или расширений. Используемый файл конфигурации может отличаться в зависимости от версии PHP, способа запуска (Apache, Nginx с PHP-FPM, CLI) и системных настроек.
Для проверки через терминал достаточно запустить команду php —ini. Она отобразит основной конфигурационный файл и список дополнительных директорий с ini-настройками. Если сервер использует PHP-FPM, полезно проверить соответствующий конфигурационный блок, так как там может быть указан альтернативный путь.
Проверка через команду php —ini в консоли

- Loaded Configuration File – путь к основному файлу
php.ini, который применяет PHP. - Scan for additional .ini files in – каталог, где ищутся дополнительные конфигурационные файлы.
- Additional .ini files parsed – перечень всех дополнительных файлов, которые были подключены.
$ php --ini Configuration File (php.ini) Path: /etc/php/8.2/cli Loaded Configuration File: /etc/php/8.2/cli/php.ini Scan for additional .ini files in: /etc/php/8.2/cli/conf.d Additional .ini files parsed: /etc/php/8.2/cli/conf.d/10-mysqlnd.ini, /etc/php/8.2/cli/conf.d/20-pdo.ini
- Если поле Loaded Configuration File пустое, значит PHP запускается без основного
php.ini. - Для CLI и веб-сервера пути могут различаться, поэтому рекомендуется проверять оба варианта.
- Чтобы убедиться в корректности, сравните результат с конфигурацией в
phpinfo().
Для точного определения загруженного php.ini создайте файл с содержимым <?php phpinfo(); ?> и откройте его в браузере. В разделе Loaded Configuration File будет указан полный путь к активному файлу конфигурации.
Если значение этого параметра пустое, PHP запускается без конфигурационного файла. В таком случае можно использовать ключ -c при запуске интерпретатора или разместить php.ini в стандартных директориях, которые указаны в разделе Configuration File (php.ini) Path.
Дополнительно phpinfo() показывает список директорий, из которых подгружаются дополнительные конфиги (Scan this dir for additional .ini files). Это позволяет выявить влияние отдельных ini-файлов, подключаемых помимо основного.
Рекомендуется сверять данные phpinfo() с результатами выполнения команды php --ini в консоли, чтобы исключить различия между конфигурацией CLI и веб-сервера.
Определение пути php.ini в разных SAPI (CLI, Apache, FPM)

В разных интерфейсах PHP путь к используемому php.ini может отличаться. Для точного определения необходимо применять команды и встроенные функции в зависимости от режима работы.
| SAPI | Команда/Метод | Результат |
|---|---|---|
| CLI | php --ini или php -i | grep "Loaded Configuration File" |
Показывает полный путь к активному php.ini для командной строки |
| Apache (mod_php) | Создать файл с <?php phpinfo(); ?> и открыть его через браузер |
В секции Loaded Configuration File указан путь, который может отличаться от CLI |
| PHP-FPM | php-fpm -i | grep "Loaded Configuration File" или php-fpm --php-ini |
Различие путей связано с отдельными бинарными сборками PHP для каждого окружения. Проверять настройки следует именно в том SAPI, где они применяются, иначе изменения могут не отразиться.
Проверка локальных файлов конфигурации в директории conf.d

Каждый файл в conf.d имеет расширение .ini и загружается в порядке алфавита, что влияет на приоритет настроек. Например, если в 00-mysqli.ini указано одно значение, а в 20-mysqli.ini другое, применится параметр из второго файла.
При изменении параметров лучше создавать отдельный файл с номером, который загрузится позже нужных модулей, например 99-custom.ini. Такой подход исключает путаницу при обновлениях пакетов и упрощает диагностику.
Использование функции ini_get() для поиска конкретных параметров

Функция ini_get() возвращает текущее значение настройки из php.ini. Это позволяет проверить, какие параметры реально применяются во время выполнения скрипта.
Пример: чтобы узнать лимит памяти, используйте:
<?php
echo ini_get('memory_limit');
?>
Если требуется проверить время выполнения скрипта:
<?php
echo ini_get('max_execution_time');
?>
Важно: ini_get() показывает итоговое значение, учитывая локальные изменения через ini_set(), .htaccess или конфигурацию виртуального хоста. Чтобы увидеть именно активное значение, всегда выполняйте вызов внутри рабочего скрипта.
Рекомендуется проверять ключевые параметры: upload_max_filesize, post_max_size, display_errors, так как они напрямую влияют на работу приложений.
Сравнение настроек CLI и веб-сервера при разных окружениях

PHP использует разные ini-файлы для CLI и веб-сервера. Для командной строки (`php -i | grep «Loaded Configuration File»`) чаще всего загружается `php.ini` из директории установки PHP, например `/etc/php/8.2/cli/php.ini`. В веб-сервере путь определяется конфигурацией сервера: Apache обычно использует `/etc/php/8.2/apache2/php.ini`, Nginx с FPM – `/etc/php/8.2/fpm/php.ini`.
Основные различия касаются лимитов и расширений. CLI обычно имеет более высокий `memory_limit` и `max_execution_time = 0`, чтобы поддерживать длительные скрипты, например миграции или генерацию отчетов. В веб-сервере эти параметры ограничены для предотвращения перегрузки, стандартно `memory_limit = 128M` и `max_execution_time = 30`. Это важно учитывать при тестировании скриптов через CLI: они могут работать корректно, но падать при запуске через браузер.
Расширения также различаются. CLI часто загружает расширения для разработки (`xdebug`, `pcov`), которые не нужны в веб-среде. В веб-сервере могут быть отключены отладочные расширения для повышения производительности. Проверять загруженные модули удобно командой `php -m` для CLI и `phpinfo()` для веб-сервера.
Рекомендация: для синхронизации окружений используйте отдельный `.ini` для CLI с параметрами, близкими к веб-серверу, если скрипты будут запускаться в обеих средах. Для контроля изменений можно использовать `php —ini` и `phpinfo()` параллельно, фиксируя отличия в настройках `post_max_size`, `upload_max_filesize` и `error_reporting`.
Особое внимание стоит уделить локализации настроек: `date.timezone` и `session.save_path` могут различаться между CLI и FPM, что приводит к ошибкам при работе с временными файлами и сессиями. Явное указание этих параметров в соответствующих ini-файлах предотвращает несоответствия.
Вопрос-ответ:
Как узнать, какой php.ini файл используется на моем сервере?
Самый простой способ — создать файл с расширением .php и вставить в него строку <?php phpinfo(); ?>. После открытия этого файла в браузере вы увидите страницу с детальной информацией о PHP, включая путь к использованному php.ini файлу. Обычно он указан в строке «Loaded Configuration File».
Можно ли определить php.ini через командную строку?
Да, это возможно. Для этого откройте терминал и выполните команду php --ini. Она покажет путь к загруженному php.ini, а также список директорий, где PHP ищет дополнительные конфигурационные файлы.
Почему php.ini иногда не изменяет настройки PHP?
Причин несколько. Во-первых, может использоваться другой php.ini, отличный от того, который вы редактируете. Во-вторых, некоторые настройки можно менять только в определённых контекстах, например в CLI или в Apache. Проверка через phpinfo() поможет убедиться, что изменения применяются к нужной конфигурации.
Как отличить php.ini для веб-сервера и для командной строки?
PHP может иметь отдельные конфигурации для веб-сервера (Apache, Nginx) и для CLI. Чтобы проверить php.ini для веба, используйте phpinfo() через браузер. Для командной строки выполните php --ini в терминале. Пути к файлам обычно отличаются.
Можно ли использовать несколько php.ini файлов одновременно?
PHP поддерживает загрузку дополнительных конфигурационных файлов через директиву scan directories. Основной php.ini загружается первым, а файлы из указанной папки применяются после него. Это позволяет разделять настройки и подключать расширения без редактирования основного файла.
Как узнать, какой php.ini используется на сервере?
Существует несколько способов определить путь к файлу конфигурации PHP. Один из самых простых — создать файл с расширением .php на сервере и поместить в него команду phpinfo();. После открытия этого файла в браузере вы увидите подробную информацию о настройках PHP. Среди них будет строка Loaded Configuration File, которая указывает точное местоположение используемого php.ini. Также можно проверить это через командную строку с помощью команды php --ini, она покажет путь к файлу и список дополнительных конфигураций.
