PHP на сервере Linux, PHP-FPM (версия уточняется)

PHP на сервере: PHP CLI использует другую версию, чем сайт

  • Обновлено
  • Чтение ≈ 3 минуты

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

PHP в командной строке и PHP, обслуживающий сайт через FPM или модуль Apache, могут быть разными сборками. Это нормально в системах с несколькими версиями: php -v показывает лишь CLI по PATH, а composer, cron и веб-сервер могут работать на разных интерпретаторах.

В этой статье
  1. Что происходит и когда применима инструкция
  2. Причины и диагностические признаки
  3. Подробная пошаговая инструкция
  4. Как проверить, что проблема исправлена
  5. Если не помогло — дальнейшая диагностика и откат

#Что происходит и когда применима инструкция

PHP в командной строке и PHP, обслуживающий сайт через FPM или модуль Apache, могут быть разными сборками. Это нормально в системах с несколькими версиями: php -v показывает лишь CLI по PATH, а composer, cron и веб-сервер могут работать на разных интерпретаторах.

#Причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
В PATH выбран другой исполняемый файлВ PATH выбран другой исполняемый файл. which php указывает на системную версию, сайт — на отдельный FPM-сокет.which php указывает на системную версию, сайт — на отдельный FPM-сокет.Разделить назначения CLI и веб-сайта.
У сайта другой FPM-пул или контейнерУ сайта другой FPM-пул или контейнер. В панели показана конкретная версия, а SSH подключён к хосту.В панели показана конкретная версия, а SSH подключён к хосту.Сверить FastCGI-маршрут и окружение.
Планировщик запускает php без абсолютного путиПланировщик запускает php без абсолютного пути. cron использует другую переменную PATH и неправильную версию.cron использует другую переменную PATH и неправильную версию.Прописать нужный бинарник в задании.

#Подробная пошаговая инструкция

  1. Снимите версии в обоих режимахВ SSH выполните php -v и command -v php. Для веба используйте версию PHP, указанную в настройках домена, либо защищённый временный маршрут, возвращающий PHP_VERSION. Не оставляйте phpinfo() общедоступным.
    Linux · Терминал (Bash)Команда
    SSH, только чтение. type -a может показать несколько бинарников в PATH; это не отражает версию FPM.
    command -v php; php -v; type -a php
  1. Проверьте явный путь к нужному CLI-бинарникуВ зависимости от сервера он может находиться по адресу /usr/bin/php8.2 или /opt/php85/bin/php. Убедитесь, что файл существует, затем запустите его с -v; не создавайте случайный глобальный симлинк /usr/bin/php на новую версию.
  2. Пример Debian PHP 8.2 в SSH, только чтение
    Linux · Терминал (Bash)Команда
    Пример Debian PHP 8.2 в SSH, только чтение. В другой системе /usr/bin/php8.2 может отсутствовать; используйте реально установленный путь.
    ls -l /usr/bin/php* 2>/dev/null; /usr/bin/php8.2 -v
  1. Выясните FPM-сокет сайтаОткройте конфигурацию домена в панели либо найдите fastcgi_pass в виртуальном хосте Nginx и путь listen у соответствующего пула. Убедитесь, что не путаете версию одного сайта с версией другого. При mod_php Apache процесс PHP запускается иначе, чем в FPM.
  1. Сравните важные параметры, а не только номер версииПроверьте в защищённом веб-маршруте php_ini_loaded_file(), extension_loaded для требуемых модулей, date.timezone, memory_limit. В SSH запустите отдельный бинарник с --ini. Слишком разные ini-файлы объясняют «работает в cron, но падает в браузере».
  2. SSH, только чтение CLI указанной версии
    Linux · Терминал (Bash)Команда
    SSH, только чтение CLI указанной версии. Сравнивайте результат с настройками FPM, полученными внутри закрытой веб-проверки.
    /usr/bin/php8.2 --ini; /usr/bin/php8.2 -m | head -n 40
  1. Исправьте только нужное место запускаЕсли проблема в cron, замените команду задания на абсолютный путь к требуемому PHP и проверьте сценарий с безопасными данными. Если проблема в версии сайта, выберите её в панели или правильно настройте FastCGI-сокет после резервной копии и проверки совместимости.
  1. Проверьте сторонние команды и зависимостиДля Composer, планировщика и скриптов развертывания уточните, какой php запускается в текущем окружении. Путь в интерактивном SSH может отличаться от cron или systemd. Не менять глобальный update-alternatives ради одного сайта без оценки всех задач.
  1. Завершите сравнением фактических окруженийОтдельно запустите пробный CLI-сценарий с явным бинарником и запрос через веб-сайт. Если ошибка воспроизводится только в одном режиме, сравните расширения, переменные окружения, рабочий каталог и разрешения файлов.

#Как проверить, что проблема исправлена

Веб-сайт и его запланированные задачи используют осознанно выбранные версии PHP, а все критические расширения и настройки соответствуют требованиям приложения.

#Если не помогло — дальнейшая диагностика и откат

Если версия веба не меняется, проверьте механизм настройки панели, отдельный контейнер или mod_php. При отсутствии новой версии для cron используйте абсолютный путь к доступному исполняемому файлу либо обратитесь к администратору.

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

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

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