Где находится файл php.ini в Linux и как его найти?
Как найти правильный php.ini в Linux
Привет! Это классическая проблема начинающих Linux-разработчиков. Система конфигов PHP в Linux отличается от Windows, но на самом деле всё логично. Давайте разберёмся по шагам.
Шаг 1: Узнайте, какой файл использует ваш PHP
Самый надёжный способ — создать PHP-скрипт и посмотреть путь прямо из phpinfo():
<?php
phpinfo();
?>
Запустите его через браузер (если речь о веб-версии) или через консоль. Найдите в выводе строку Loaded Configuration File — это и есть путь к вашему активному php.ini. Обычно это что-то вроде:
/etc/php/8.1/apache2/php.ini— для Apache mod_php/etc/php/8.1/fpm/php.ini— для PHP-FPM/etc/php/8.1/cli/php.ini— для командной строки (CLI)
Обратите внимание на версию PHP (8.1 в примере) и на SAPI (серверный API).
Шаг 2: Почему файлов несколько?
Linux-дистрибутивы (Ubuntu, Debian) хранят отдельные конфиги для разных режимов работы PHP:
- CLI — когда вы запускаете PHP из терминала
- Apache — когда PHP работает как модуль Apache
- FPM — когда используется PHP-FPM (часто с Nginx или Apache через прокси)
Каждый режим может иметь свои настройки. Например, для CLI можно разрешить больше памяти, чем для веб-версии.
Шаг 3: Как изменить параметр?
Допустим, ваш активный файл — /etc/php/8.1/fpm/php.ini. Откройте его с правами root:
sudo nano /etc/php/8.1/fpm/php.ini
Найдите строку upload_max_filesize (можно нажать Ctrl+W в nano) и измените:
upload_max_filesize = 20M
post_max_size = 25M
max_execution_time = 300
Важно: После изменения нужно перезапустить PHP-FPM:
sudo systemctl restart php8.1-fpm
Если используете Apache mod_php — перезапускайте Apache:
sudo systemctl restart apache2
Шаг 4: Альтернативный способ — через ini-директории
В Linux можно не трогать основной php.ini, а создать свой файл в папке /etc/php/8.1/fpm/conf.d/ или /etc/php/8.1/apache2/conf.d/. Создайте файл, например my-settings.ini:
sudo nano /etc/php/8.1/fpm/conf.d/99-my-settings.ini
И запишите туда только нужные изменения:
upload_max_filesize = 20M
post_max_size = 25M
Это удобно — не нужно копаться в огромном основном файле, и при обновлении PHP ваши настройки сохранятся.
Шаг 5: Проверка результата
Снова запустите phpinfo() и убедитесь, что параметры изменились. Если нет — проверьте:
- Правильный ли файл вы редактировали (смотрите Loaded Configuration File)
- Перезапустили ли нужный сервис
- Нет ли конфликта с настройками в .htaccess или в коде (ini_set)
Бонус: быстрая команда поиска
Вместо ручного поиска можно использовать:
php -i | grep "Loaded Configuration File"
Для CLI-версии. А для веб-версии — просто посмотрите в phpinfo().
<<Как понять, какой php.ini использует ваш проект
Коллега выше всё правильно объяснил, но добавлю важный момент: если у вас несколько проектов на одном сервере, они могут использовать разные версии PHP или разные конфиги через пулы FPM.
Способ через PHP-скрипт
Просто добавьте в ваш проект такой код и запустите его в браузере:
<?php
echo "Текущий php.ini: " . php_ini_loaded_file() . "<br>";
echo "Директория сканирования: " . php_ini_scanned_files();
?>
Функция php_ini_loaded_file() покажет точный путь к активному файлу. А php_ini_scanned_files() — все дополнительные ini-файлы, которые подгружаются дополнительно.
Для консольных скриптов
Если вы запускаете скрипт из терминала, используйте:
php -r "echo php_ini_loaded_file();"
Или просто:
php --ini
Эта команда покажет и основной файл, и дополнительные директории. Очень удобно для быстрой диагностики.
Важный совет
Если вы используете Docker или виртуальные окружения — php.ini может лежать вообще в другом месте, например внутри контейнера. В таких случаях смотрите в документацию образа или используйте docker exec для проверки.