Настройки PHP: где менять и что значат
Настройки PHP — строки в файле php.ini: лимит памяти, размер загружаемых файлов, показ ошибок, часовой пояс. Для сайта на nginx нужен файл /etc/php/8.3/fpm/php.ini, после правки PHP-FPM перезапускают. Ниже — главные настройки, их значения в Ubuntu и страницы с подробностями.
Содержание 8
Что сделать прямо сейчас
- Команды вводятся на сервере: подключитесь к нему по SSH ([как подключиться](/instrukcii/kak-podklyuchitsya-k-vps-po-ssh/)) и набирайте их в том же окне.
- Откройте файл настроек PHP для сайта:
sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Нажмите Ctrl+W, введите имя настройки, например
memory_limit, и нажмите Enter — курсор встанет на строку с этой настройкой. Нужна строка вида «имя = значение». Если курсор встал на пояснение без знака=, нажмите Ctrl+W и Enter ещё раз — поиск пойдёт дальше. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует. - Поменяйте значение после знака
=. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X. - Перезапустите PHP-FPM:
sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен. - Проверьте значение:
php-fpm8.3 -i | grep memory_limit. Вместо memory_limit подставьте имя своей настройки.
Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.
Главные настройки
| Настройка | Что задаёт | В Ubuntu 24.04 | Подробно |
|---|---|---|---|
memory_limit | сколько памяти может занять один скрипт | 128M, в командной строке -1 — без лимита | лимит памяти |
upload_max_filesize | самый большой файл, который можно загрузить | 2M | размер загрузки |
post_max_size | весь объём формы вместе с файлами | 8M | размер загрузки |
max_input_vars | сколько полей формы примет PHP | 1000 | число полей |
max_execution_time | сколько секунд может работать скрипт | 30, в командной строке без лимита | время работы |
display_errors | показывать ли ошибки на странице | Off | показ ошибок |
log_errors | записывать ли ошибки в журнал | On | показ ошибок |
date.timezone | часовой пояс для дат и времени | не задан — PHP берёт UTC | часовой пояс |
opcache.enable | хранить ли готовый код скриптов в памяти | On для сайта, в командной строке Off | OPcache |
pm, pm.max_children | как PHP-FPM запускает процессы и сколько их может быть | dynamic, 5 | процессы PHP-FPM |
Последняя строка — настройки пула PHP-FPM: они в файле /etc/php/8.3/fpm/pool.d/www.conf, а не в php.ini.
Размеры пишут с буквой: K — килобайты, M — мегабайты, G — гигабайты. 64M — 64 мегабайта. Дробные числа не работают: 0.5M PHP поймёт как ноль.
Какой файл править
Файлов php.ini в Ubuntu два: /etc/php/8.3/fpm/php.ini — для сайта, /etc/php/8.3/cli/php.ini — для команды php в окне SSH и для заданий cron, которые её запускают. Правка одного на другой не влияет. Все файлы настроек и как найти нужный — на странице Где находится php.ini.
Где ещё задают настройки
| Где | Для кого действует | Что можно менять |
|---|---|---|
/etc/php/8.3/fpm/php.ini | все сайты на сервере | любые настройки |
файл пула в /etc/php/8.3/fpm/pool.d/ | сайты этого пула | любые настройки — строками php_value[...] и php_admin_value[...] |
файл .user.ini в папке сайта | скрипты в этой папке и ниже | не все: например, memory_limit и upload_max_filesize можно, opcache.memory_consumption — нет |
функция ini_set() в коде | один скрипт, пока он работает | ещё меньше: memory_limit можно, upload_max_filesize — нет |
Действует то, что задано позже: php.ini, затем пул, затем .user.ini, затем ini_set(). Строка php_admin_value в пуле закрепляет значение: .user.ini и ini_set() его уже не поменяют. Где какую настройку можно менять, написано в списке настроек PHP: INI_ALL — где угодно, INI_PERDIR — везде, кроме ini_set(), INI_SYSTEM — только в php.ini и в пуле.
Как задать настройки только для одного сайта — отдельный пул или .user.ini.
Как проверить значение
ivan@myserver:~$ php-fpm8.3 -i | grep memory_limit
memory_limit => 128M => 128MКоманда php-fpm8.3 -i печатает настройки PHP для сайта и завершается — службу она не трогает. Она учитывает php.ini и папку conf.d, но не видит настройки пула и .user.ini. Значение, которое видит сайт, точнее всего показывает phpinfo() на странице сайта: оно учитывает и настройки пула PHP-FPM, и файл .user.ini.
Команда php -i показывает настройки для командной строки, а не для сайта. Например, memory_limit там -1.
Если настройка задана в нескольких местах, найти их все поможет поиск по папке PHP-FPM:
grep -rn memory_limit /etc/php/8.3/fpm/В ответе — файл, номер строки и сама строка. Строки с точкой с запятой в начале не действуют.
На виртуальном хостинге
Файла php.ini на виртуальном хостинге не видно. Версию PHP и настройки вроде memory_limit меняют в панели хостинга, в разделе с настройками PHP. Если нужной настройки там нет, спросите поддержку хостинга.
Источники
- Файл 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.
- Справка PHP: список настроек — значения по умолчанию и где можно менять каждую настройку: INI_ALL, INI_PERDIR или INI_SYSTEM.
- Справка PHP: режимы настроек — INI_PERDIR меняют в php.ini и .user.ini, INI_ALL — где угодно, в том числе функцией ini_set(), INI_SYSTEM — только в php.ini.
- Справка PHP: файлы .user.ini — читаются только в CGI/FastCGI, к которым относится PHP-FPM; PHP ищет их от папки скрипта до корня сайта и перечитывает раз в 300 секунд.
- Исходный код PHP 8.3.6: fpm_php.c — php_value задаёт значение для пула, php_admin_value вдобавок запрещает менять его в .user.ini и ini_set().
- Справка PHP: сокращения K, M и G — 1K — 1024 байта, 1M — 1 048 576 байт; дробные значения вроде 0.5M не работают.
- Исходный код PHP 8.3.6: fpm_main.c — ключ -i печатает сведения о PHP и завершает работу, не запуская пулы.
Сверено 14 октября 2026 года.
Что почитать дальше
- Где находится php.iniкакие файлы настроек есть и почему изменения не применились.
- Настройки PHP для одного сайтаотдельный пул PHP-FPM и .user.ini.
- phpinfo()как увидеть настройки, с которыми работает сайт.
- Как установить PHP на UbuntuPHP-FPM, модули и подключение к nginx.
- Ошибки PHPразборы ошибок PHP по тексту сообщения.