Как определить используемый php ini файл

Как узнать какой php ini используется

Как узнать какой php ini используется

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

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

Проверка через команду php —ini в консоли

Проверка через команду 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
  1. Если поле Loaded Configuration File пустое, значит PHP запускается без основного php.ini.
  2. Для CLI и веб-сервера пути могут различаться, поэтому рекомендуется проверять оба варианта.
  3. Чтобы убедиться в корректности, сравните результат с конфигурацией в 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.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

Каждый файл в conf.d имеет расширение .ini и загружается в порядке алфавита, что влияет на приоритет настроек. Например, если в 00-mysqli.ini указано одно значение, а в 20-mysqli.ini другое, применится параметр из второго файла.

При изменении параметров лучше создавать отдельный файл с номером, который загрузится позже нужных модулей, например 99-custom.ini. Такой подход исключает путаницу при обновлениях пакетов и упрощает диагностику.

Использование функции ini_get() для поиска конкретных параметров

Использование функции 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 и веб-сервера при разных окружениях

Сравнение настроек 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, она покажет путь к файлу и список дополнительных конфигураций.

Ссылка на основную публикацию