#Симптомы и отличие от похожих неисправностей
Администратор увеличил 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. | Проверить синтаксис и выполнить управляемую перезагрузку. |
#Диагностика и пошаговое устранение
- Запишите конкретную настройку и страницу, где видно старое значениеВ панели сайта выберите домен и его настройки PHP; запишите, какой параметр меняли, прежнее и новое значение, а также дату изменения. Если ошибка возникает только при загрузке файла, фиксируйте максимальный размер и точный код ошибки
$_FILES, не загружая персональные документы для теста. Не меняйте дополнительные настройки до выяснения причины расхождения.
- Узнайте реальную версию PHP для веб-запросаВ панели управления найдите «Версия PHP» и тип обработчика выбранного домена. Для проверки в коде на короткое время добавьте логирование
PHP_VERSION,PHP_SAPIиini_get("memory_limit")во внутренний диагностический маршрут сайта, доступный только владельцу; после вызова проверьте закрытый журнал и удалите диагностику. ЕслиPHP_SAPIнеfpm-fcgi, используйте документацию фактического обработчика. - Пример кода по теме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));
- Сравните путь php.ini в CLI и у сайтаПодключитесь к серверу по SSH из терминала своего компьютера:
ssh пользователь@сервер. Запуститеphp --iniиphp -v; первая команда покажет конфигурацию командного интерпретатора, вторая — версию. Это полезное сравнение, но не доказательство для PHP-FPM. Реальный файл для сайта возьмите изphp_ini_loaded_file()в закрытой диагностике или из настроек панели. При двух несовпадающих путях исправляйте только веб-конфигурацию. - Просмотр версии и конфигурации PHP для командной строки, не FPMLinux · Терминал (Bash)КомандаПросмотр версии и конфигурации PHP для командной строки, не FPM. Права администратора не нужны.
php -vphp --ini
- Найдите переопределения в пуле и на уровне сайтаОткройте конфигурацию действующего пула: например,
/etc/php/8.2/fpm/pool.d/site.conf, если это ваш путь. Проверьтеphp_value[memory_limit]иphp_admin_value[memory_limit], а для параметров загрузки — те же директивы по названию. Посмотрите.user.iniв корневом каталоге сайта: значения из него могут задерживаться кэшированием. Если панель генерирует файлы автоматически, изменяйте настройки в самой панели; прямое редактирование панели может быть перезаписано.
- Сохраните прежнее значение и измените ровно один активный источникВыберите один авторитетный источник: панель домена, php.ini активной версии или настройку конкретного пула. Если параметр задан через
php_admin_value, его нельзя перекрытьini_set()из приложения. Сохраните копию конфигурации или выпишите старое значение; измените только нужный параметр. Не ставьтеmemory_limit=-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Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Проверьте дополнительные файлы настройки и кэш .user.iniЕсли после перезагрузки прежняя настройка сохраняется, обратитесь к результату
php_ini_scanned_files()в закрытом административном коде: некоторые пакеты читают конфигурационные файлы из каталогаconf.dпосле основного php.ini. Отдельно посмотрите параметрuser_ini.cache_ttlи учитывайте, что.user.iniобрабатывается с интервалом проверки, а не при каждом запросе. Переопределения может устанавливать и управляющая панель. Не удаляйте неизвестные конфигурационные файлы; выпишите порядок применения и согласуйте правку одного значения.
- Проверьте итоговое значение только через HTTP и удалите диагностикуПовторите вызов закрытого диагностического маршрута, убедитесь в новом значении
ini_get()и повторите исходную операцию: загрузку файла, формирование отчёта или генерацию миниатюры. Если значение прежнее, проверьте каталог размещения.user.iniи настройки панели, а не перезапускайте случайные службы. При отрицательном результате верните старое значение и reload, сохранив два наблюдения: значение CLI и значение HTTP.
#Как проверить результат и что предпринять при неуспехе
Успех — значение ini_get() внутри веб-запроса совпадает с установленным в активной конфигурации, операция выполняется и в логах PHP-FPM нет новых ошибок. Если значения не изменились, зафиксируйте PHP_SAPI, версию и путь php_ini_loaded_file() без публикации закрытой информации и верните предыдущие настройки.