PHP-FPM LinuxPHP 8.xNginx/Apache

PHP-FPM: php.ini изменён, но сайт показывает прежние настройки

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Главное отличие от обычной настройки php.ini: нужно доказать, какой PHP обрабатывает HTTP-запрос, и понять приоритет переопределений php_admin_value, php_value и .user.ini. Изменённый файл в терминале не обязательно относится к сайту.

В этой статье
  1. Симптомы и отличие от похожих неисправностей
  2. Диагностика и пошаговое устранение
  3. Как проверить результат и что предпринять при неуспехе

#Симптомы и отличие от похожих неисправностей

Администратор увеличил memory_limit, max_execution_time или upload_max_filesize в php.ini, но веб-сайт продолжает использовать прежнее значение. Как найти файл конфигурации именно работающего пула, отличить CLI от FPM и применить изменение. Главное отличие от обычной настройки php.ini: нужно доказать, какой PHP обрабатывает HTTP-запрос, и понять приоритет переопределений php_admin_value, php_value и .user.ini. Изменённый файл в терминале не обязательно относится к сайту.

Возможная причинаКак узнатьЧто делать
Редактировался php.ini другой версии или SAPIТерминальная команда php --ini показывает параметры CLI, а сайт обслуживается PHP-FPM отдельной версии и читает свой php.ini.В командной строке новое значение, а в браузере старое.Определить активный пул, версию и путь загруженного файла для веб-запроса.
Настройку перекрывает конфигурация пулаВ www.conf или отдельном пуле задан php_value/php_admin_value, который меняет итоговое значение.В php.ini параметр один, а вызов ini_get() внутри PHP-приложения показывает другой.Найти источник переопределения и править его целенаправленно.
Новая конфигурация ещё не применена или действует кэш .user.iniPHP-FPM ещё не перечитал настройки; изменения .user.ini обнаруживаются не мгновенно.После корректного reload значение меняется, либо меняется с задержкой, определённой user_ini.cache_ttl.Проверить синтаксис и выполнить управляемую перезагрузку.

#Диагностика и пошаговое устранение

  1. Запишите конкретную настройку и страницу, где видно старое значениеВ панели сайта выберите домен и его настройки PHP; запишите, какой параметр меняли, прежнее и новое значение, а также дату изменения. Если ошибка возникает только при загрузке файла, фиксируйте максимальный размер и точный код ошибки $_FILES, не загружая персональные документы для теста. Не меняйте дополнительные настройки до выяснения причины расхождения.
  1. Узнайте реальную версию PHP для веб-запросаВ панели управления найдите «Версия PHP» и тип обработчика выбранного домена. Для проверки в коде на короткое время добавьте логирование PHP_VERSION, PHP_SAPI и ini_get("memory_limit") во внутренний диагностический маршрут сайта, доступный только владельцу; после вызова проверьте закрытый журнал и удалите диагностику. Если PHP_SAPI не fpm-fcgi, используйте документацию фактического обработчика.
  2. Пример кода по теме
    PHP
    Не создавайте публичный phpinfo.php: сведения о конфигурации и путях могут раскрыть устройство сервера. После теста удалите этот код.
    <?php
    // Временно в защищённом административном обработчике.
    error_log('PHP='.PHP_VERSION.' SAPI='.PHP_SAPI);
    error_log('memory_limit='.ini_get('memory_limit'));
    error_log('ini='.var_export(php_ini_loaded_file(), true));
  1. Сравните путь php.ini в CLI и у сайтаПодключитесь к серверу по SSH из терминала своего компьютера: ssh пользователь@сервер. Запустите php --ini и php -v; первая команда покажет конфигурацию командного интерпретатора, вторая — версию. Это полезное сравнение, но не доказательство для PHP-FPM. Реальный файл для сайта возьмите из php_ini_loaded_file() в закрытой диагностике или из настроек панели. При двух несовпадающих путях исправляйте только веб-конфигурацию.
  2. Просмотр версии и конфигурации PHP для командной строки, не FPM
    Linux · Терминал (Bash)Команда
    Просмотр версии и конфигурации PHP для командной строки, не FPM. Права администратора не нужны.
    php -v
    php --ini
  1. Найдите переопределения в пуле и на уровне сайтаОткройте конфигурацию действующего пула: например, /etc/php/8.2/fpm/pool.d/site.conf, если это ваш путь. Проверьте php_value[memory_limit] и php_admin_value[memory_limit], а для параметров загрузки — те же директивы по названию. Посмотрите .user.ini в корневом каталоге сайта: значения из него могут задерживаться кэшированием. Если панель генерирует файлы автоматически, изменяйте настройки в самой панели; прямое редактирование панели может быть перезаписано.
  1. Сохраните прежнее значение и измените ровно один активный источникВыберите один авторитетный источник: панель домена, php.ini активной версии или настройку конкретного пула. Если параметр задан через php_admin_value, его нельзя перекрыть ini_set() из приложения. Сохраните копию конфигурации или выпишите старое значение; измените только нужный параметр. Не ставьте memory_limit=-1 и не увеличивайте все таймауты одновременно — это затруднит поиск причины.
  1. Проверьте синтаксис пула и примените изменения корректной службыДля Debian PHP 8.2 в терминале администратора выполните sudo php-fpm8.2 -t. После успешного результата выполните sudo systemctl reload php8.2-fpm. В среде панели примените её штатную настройку перезапуска конкретного обработчика. Если тест конфигурации ошибочен, не перегружайте сервис: восстановите старый файл и повторите проверку. При обновлении .user.ini проверьте также задержку user_ini.cache_ttl.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Команды-примеры для Debian PHP 8.2; версия и имя службы должны совпадать с обработчиком сайта. Вторая команда только после успешного теста. Команда перезагрузки выполняется только при успешной проверке конфигурации (оператор &&). При ошибке исправьте конфигурацию и повторите проверку; не запускайте перезагрузку вручную.
    sudo php-fpm8.2 -t && sudo systemctl reload php8.2-fpm

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Проверьте дополнительные файлы настройки и кэш .user.iniЕсли после перезагрузки прежняя настройка сохраняется, обратитесь к результату php_ini_scanned_files() в закрытом административном коде: некоторые пакеты читают конфигурационные файлы из каталога conf.d после основного php.ini. Отдельно посмотрите параметр user_ini.cache_ttl и учитывайте, что .user.ini обрабатывается с интервалом проверки, а не при каждом запросе. Переопределения может устанавливать и управляющая панель. Не удаляйте неизвестные конфигурационные файлы; выпишите порядок применения и согласуйте правку одного значения.
  1. Проверьте итоговое значение только через HTTP и удалите диагностикуПовторите вызов закрытого диагностического маршрута, убедитесь в новом значении ini_get() и повторите исходную операцию: загрузку файла, формирование отчёта или генерацию миниатюры. Если значение прежнее, проверьте каталог размещения .user.ini и настройки панели, а не перезапускайте случайные службы. При отрицательном результате верните старое значение и reload, сохранив два наблюдения: значение CLI и значение HTTP.

#Как проверить результат и что предпринять при неуспехе

Успех — значение ini_get() внутри веб-запроса совпадает с установленным в активной конфигурации, операция выполняется и в логах PHP-FPM нет новых ошибок. Если значения не изменились, зафиксируйте PHP_SAPI, версию и путь php_ini_loaded_file() без публикации закрытой информации и верните предыдущие настройки.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.