Справочник

Настройки PHP: где менять и что значат

Настройки PHP — строки в файле php.ini: лимит памяти, размер загружаемых файлов, показ ошибок, часовой пояс. Для сайта на nginx нужен файл /etc/php/8.3/fpm/php.ini, после правки PHP-FPM перезапускают. Ниже — главные настройки, их значения в Ubuntu и страницы с подробностями.

≈ 6 мин чтения
Содержание 8

Что сделать прямо сейчас

  1. Команды вводятся на сервере: подключитесь к нему по SSH ([как подключиться](/instrukcii/kak-podklyuchitsya-k-vps-po-ssh/)) и набирайте их в том же окне.
  2. Откройте файл настроек PHP для сайта: sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  3. Нажмите Ctrl+W, введите имя настройки, например memory_limit, и нажмите Enter — курсор встанет на строку с этой настройкой. Нужна строка вида «имя = значение». Если курсор встал на пояснение без знака =, нажмите Ctrl+W и Enter ещё раз — поиск пойдёт дальше. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует.
  4. Поменяйте значение после знака =. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
  5. Перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  6. Проверьте значение: 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сколько полей формы примет PHP1000число полей
max_execution_timeсколько секунд может работать скрипт30, в командной строке без лимитавремя работы
display_errorsпоказывать ли ошибки на страницеOffпоказ ошибок
log_errorsзаписывать ли ошибки в журналOnпоказ ошибок
date.timezoneчасовой пояс для дат и временине задан — PHP берёт UTCчасовой пояс
opcache.enableхранить ли готовый код скриптов в памятиOn для сайта, в командной строке OffOPcache
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. Если нужной настройки там нет, спросите поддержку хостинга.

Источники

Сверено 14 октября 2026 года.

Что почитать дальше