Где находится php.ini в Ubuntu
В Ubuntu у PHP два файла php.ini: /etc/php/8.3/fpm/php.ini — для сайта на nginx и /etc/php/8.3/cli/php.ini — для команды php в окне SSH. Для сайта правьте первый и после правки перезапустите PHP-FPM.
Содержание 8
Что сделать прямо сейчас
- Команды вводятся на сервере: подключитесь к нему по SSH ([как подключиться](/instrukcii/kak-podklyuchitsya-k-vps-po-ssh/)) и набирайте их в том же окне.
- Узнайте, какой файл читает PHP для сайта:
php-fpm8.3 -i | grep 'Loaded Configuration File'. В ответе — строкаLoaded Configuration File => /etc/php/8.3/fpm/php.ini. - Откройте этот файл:
sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Поменяйте нужную настройку, сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
- Перезапустите PHP-FPM:
sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.
Какие файлы настроек есть
| Файл или папка | Что в нём |
|---|---|
/etc/php/8.3/fpm/php.ini | настройки PHP для сайта: его читает PHP-FPM |
/etc/php/8.3/fpm/conf.d/ | файлы модулей для сайта; читаются после php.ini и могут поменять его значения |
/etc/php/8.3/fpm/pool.d/www.conf | пул PHP-FPM: сколько процессов, сокет, пользователь; здесь же можно задать настройки PHP для сайтов пула |
/etc/php/8.3/fpm/php-fpm.conf | настройки самой службы PHP-FPM: журнал и подключение пулов |
/etc/php/8.3/cli/php.ini | настройки для команды php в окне SSH и для заданий cron, которые её запускают |
/etc/php/8.3/cli/conf.d/ | файлы модулей для командной строки |
/etc/php/8.3/mods-available/ | файлы всех модулей; в папках conf.d — ссылки на них |
/usr/lib/php/8.3/php.ini-production | оригинал php.ini для сайта из пакета: с ним можно сравнить свой файл |
Файлы для сайта и для командной строки отличаются тремя строками: memory_limit, expose_php и disable_functions. В командной строке memory_limit = -1 — без лимита памяти.
Почему php --ini показывает не тот файл
ivan@myserver:~$ php --ini
Configuration File (php.ini) Path: /etc/php/8.3/cli
Loaded Configuration File: /etc/php/8.3/cli/php.ini
Scan for additional .ini files in: /etc/php/8.3/cli/conf.dКоманда php — это PHP для командной строки, и php --ini показывает его файлы: папку cli. Сайт на nginx работает через PHP-FPM, и его файл показывает другая команда:
ivan@myserver:~$ php-fpm8.3 -i | grep 'Loaded Configuration File'
Loaded Configuration File => /etc/php/8.3/fpm/php.iniЕсли правите php.ini из папки cli, сайт изменений не увидит.
Как посмотреть свои изменения
Сравните свой php.ini с оригиналом из пакета:
diff /usr/lib/php/8.3/php.ini-production /etc/php/8.3/fpm/php.iniЕсли команда ничего не вывела, файл не меняли. Иначе она покажет отличия: строки со знаком < в начале — из оригинала, со знаком > — из вашего файла. Так видно, что вы уже поменяли и не осталось ли лишней правки. Для командной строки оригинал — /usr/lib/php/8.3/php.ini-production.cli.
Если изменения не применились
| Причина | Как проверить и исправить |
|---|---|
| правили файл для командной строки | для сайта нужен /etc/php/8.3/fpm/php.ini |
| PHP-FPM не перезапущен | sudo systemctl restart php8.3-fpm |
| в начале строки осталась точка с запятой | уберите её: строка с ; не действует |
| настройка задана ещё где-то | найдите все строки: grep -rn memory_limit /etc/php/8.3/fpm/ — вместо memory_limit своя настройка. Файлы из conf.d и пулы меняют значение из php.ini |
| настройка задана в .user.ini | найдите такие файлы: sudo find /var/www -name .user.ini |
| сайт работает на другой версии PHP | посмотрите сокет в настройках nginx: grep -rn fastcgi_pass /etc/nginx/sites-enabled/ |
Проверьте, что вышло: php-fpm8.3 -i | grep memory_limit. Значения из пула и .user.ini эта команда не видит. Значение, которое видит сайт, точнее всего показывает phpinfo() на странице сайта: оно учитывает и настройки пула PHP-FPM, и файл .user.ini.
На виртуальном хостинге
На виртуальном хостинге php.ini не правят: версию PHP и настройки меняют в панели хостинга, в разделе с настройками PHP.
Источники
- Справка PHP: файл конфигурации — php.ini читается при запуске PHP, файлы из дополнительной папки — после него.
- Справка PHP: ключи командной строки — --ini показывает файлы настроек, -i — сведения о PHP и значения настроек.
- Исходный код PHP 8.3.6: fpm_main.c — ключ -i печатает сведения о PHP и завершает работу, не запуская пулы.
- Справка PHP: файлы .user.ini — читаются только в CGI/FastCGI, к которым относится PHP-FPM; PHP ищет их от папки скрипта до корня сайта и перечитывает раз в 300 секунд.
- Файл php.ini-production из PHP 8.3.6 — значения для рабочих серверов: display_errors Off, log_errors On, max_execution_time 30, post_max_size 8M, upload_max_filesize 2M.
- Справка diff для Ubuntu 24.04 — сравнивает файлы построчно и показывает отличия.
Сверено 14 октября 2026 года.
Что почитать дальше
- Настройки PHPглавные настройки, их значения и где их задают.
- Настройки PHP для одного сайтаотдельный пул PHP-FPM и .user.ini.
- phpinfo()настройки, с которыми работает сайт.
- Модули PHPесли PHP пишет Unable to load dynamic library.