#Симптом и границы применимости
После изменения версии PHP в панели сайт может обращаться к прежнему сокету, а новая служба FPM — запускать другой набор пулов. Для каждой версии PHP свой исполняемый файл, набор расширений и php.ini; нельзя считать, что один пул автоматически «перешёл» на новую версию.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Новый пул не запускаетсяНастройки старого пула могут не подходить новой сборке. | В журнале FPM есть ошибка parse или неизвестная директива | Проверить конфигурацию конкретной версии |
| Веб-сервер ссылается на старый сокетСмена версии не всегда обновляет конфигурацию прокси. | Nginx/Apache возвращает 502 только на этом сайте | Сверить fastcgi_pass/SetHandler и listen нового пула |
| В нужном PHP нет модуля или правphp.ini и модули устанавливаются отдельно для разных версий. | Пул работает, но приложение возвращает ошибку | Проверить расширения и права под новой версией |
#Пошаговая диагностика и исправление
- Зафиксируйте прежнее рабочее состояниеВ панели запишите исходную версию PHP сайта, имя пула, сокет, набор дополнительных расширений и путь к настройкам. Сохраните копию конфигурации и убедитесь, что резервная копия сайта/базы актуальна. Для чужого сайта без доступа к панели менять общий PHP недопустимо.
- Найдите реально работающую службу новой версииПо SSH посмотрите systemctl list-units с FPM и проверьте статус нужного экземпляра. Не предполагаете, что установленная команда php -v означает версию FPM на сайте; php -v обычно относится к CLI.Linux · Терминал (Bash)Команда
systemctl list-units --type=service --all | grep -Ei "php.*fpm|fpm.*php"
- Проверьте конфигурацию нового пула отдельноОткройте файл пула через панель или SSH; проверьте секции [имя], listen, user/group, pm и пути журналов. Запустите тест бинарного файла новой версии с его конфигурацией. Если ошибка сообщает о директиве, исправьте только её либо верните прежний пул; не копируйте весь старый php.ini поверх нового.
- Пример команды; замените на бинарный файл установленной версииLinux · Терминал (Bash)С осторожностьюНужен sudoПример команды; замените на бинарный файл установленной версии.
sudo php-fpm8.2 -tКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Сопоставьте сокет с внешним веб-серверомВ Nginx найдите fastcgi_pass, в Apache — SetHandler/ProxyPassMatch. Сравните точный путь с listen пула и наличием сокета через ss -xlpn. Если хостинг управляет связкой автоматически, смените версию сайта в его интерфейсе и пересоздайте конфигурацию штатным способом, а не вручную.
- Только чтение; путь Unix-сокета не универсаленLinux · Терминал (Bash)КомандаНужен sudoТолько чтение; путь Unix-сокета не универсален.
sudo ss -xlpn | grep -i fpm
- Проверьте совместимость приложенияВ защищённой тестовой копии выполните основные сценарии сайта: главная, вход, отправка формы, доступ к БД. Проверьте журналы ошибок PHP после запуска на новой версии, наличие PDO/mysqli/mbstring и других реально нужных расширений. Не размещайте публичный phpinfo().
- Завершите смену или откатите еёЕсли синтаксис и тесты успешны, выполните управляемое переключение пула в панели и проверьте запрос снаружи. При 502, пустой странице либо ошибке модуля сразу верните исходную версию и конфигурацию; не оставляйте сайт на сломанном пуле.
#Как проверить результат
Панель показывает нужную версию, активный пул действительно обслуживает домен, веб-сервер подключается к новому listen; тестовые страницы и функции работают, ошибки FPM не накапливаются.
#Если проблема не устранена
Если пул не стартует после переключения, проверьте его конфиг-тест и journalctl точной службы. Различайте ошибки запуска пула и ошибки выполнения PHP-приложения.