Справочник

OPcache в PHP: что это и как настроить

OPcache хранит готовый к выполнению код скриптов PHP в памяти, чтобы не разбирать файлы при каждом запросе. В Ubuntu он включён для сайта и выключен для командной строки. Изменения в файлах он замечает в течение 2 секунд.

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

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

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Проверьте, работает ли OPcache для сайта:

ivan@myserver:~$ php-fpm8.3 -i | grep opcache.enable
opcache.enable => On => On
opcache.enable_cli => Off => Off
opcache.enable_file_override => Off => Off

opcache.enable => On — OPcache для сайта включён, ничего делать не нужно. opcache.enable_cli => Off — для команды php в окне SSH он выключен, так и задумано. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.

Как работает OPcache

Перед выполнением PHP переводит файл скрипта во внутренний код. Без OPcache это происходит при каждом запросе. С OPcache готовый код остаётся в памяти PHP-FPM, и следующий запрос берёт его оттуда.

НастройкаВ Ubuntu 24.04Что задаёт
opcache.enableOnOPcache для сайта
opcache.enable_cliOffOPcache для команды php
opcache.memory_consumption128сколько мегабайт памяти отдать под код
opcache.max_accelerated_files10000сколько файлов может поместиться
opcache.validate_timestampsOnпроверять, не изменились ли файлы
opcache.revalidate_freq2через сколько секунд снова проверять файл

Строка with Zend OPcache в ответе php -v значит, что модуль загружен. Работает ли он для сайта, показывает только opcache.enable.

Если сайт показывает старый код

  • Подождите пару секунд и обновите страницу: OPcache проверяет файл с перерывом в 2 секунды.
  • Проверьте проверку изменений: php-fpm8.3 -i | grep validate_timestamps. Если там Off, OPcache не видит новых файлов, пока PHP-FPM не перезапустят: sudo systemctl restart php8.3-fpm.
  • Если и после перезапуска на странице старое — дело не в OPcache. Проверьте, в той ли папке вы меняли файлы: папку сайта задаёт строка root в настройках nginx. И обновите страницу без кеша браузера: Ctrl+F5, на Mac — Cmd+Shift+R.

Как поменять настройки

Настройки OPcache — в разделе [opcache] файла php.ini, все строки там закомментированы. memory_consumption и max_accelerated_files меняются только в php.ini.

  1. Откройте файл настроек PHP для сайта: sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  2. Нажмите Ctrl+W, введите opcache.memory_consumption и нажмите Enter — курсор встанет на строку с этой настройкой. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует.
  3. Впишите новое значение: opcache.memory_consumption=256. 256 — пример, число в мегабайтах.
  4. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
  5. Перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  6. Проверьте значение: php-fpm8.3 -i | grep opcache.memory_consumption.

Без перезапуска PHP-FPM настройки OPcache не меняются. Перезапуск заодно очищает кеш — так сбрасывают OPcache целиком.

Источники

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

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