
Актуальная версия PHP напрямую влияет на производительность и безопасность веб-приложений. Устаревшие сборки содержат уязвимости и лишают доступ к современным функциям языка. Обновление версии – это не формальность, а необходимость для стабильной работы проектов.
Перед началом стоит проверить, какие версии PHP поддерживает ваш сервер. На Linux-системах это можно сделать командой php -v. На хостингах с панелью управления версия указывается в настройках домена или раздела «Software».
Для Debian/Ubuntu обновление выполняется через официальный репозиторий Ondřej Surý: добавляется PPA, затем выполняется установка новой версии с помощью apt install. На CentOS и AlmaLinux используется dnf module для переключения потоков. Важно не удалять старую версию сразу, чтобы избежать сбоев при несовместимости кода.
После обновления необходимо проверить конфигурацию php.ini, активировать нужные расширения и перезапустить веб-сервер. В Apache это делается через systemctl restart apache2, в Nginx – через systemctl restart php-fpm и systemctl restart nginx.
Проверка текущей версии PHP в командной строке
PHP 8.1.12 (cli) (built: Oct 14 2023 10:22:31) ( NTS )
Если сервер поддерживает несколько версий PHP, используйте команду which php для определения пути к исполняемому файлу. Для проверки конкретной версии можно указать полный путь, например: /usr/bin/php8.1 -v.
На системах с пакетными менеджерами (Debian/Ubuntu) можно получить список всех доступных версий через update-alternatives —display php, а затем переключиться на нужную с помощью sudo update-alternatives —config php.
Для быстрого теста совместимости с веб-сервером создайте PHP-файл с содержимым <?php phpinfo(); ?> и откройте его через браузер, чтобы убедиться, что CLI и веб-сервер используют одну версию PHP.
Выявление зависимостей проектов от конкретной версии PHP
Первый шаг – анализ используемых расширений и библиотек. Выполните команду php -m для списка модулей и сопоставьте их с документацией проекта. Некоторые пакеты, например, mbstring или intl, могут иметь ограничения по версии PHP.
Проверьте composer.json для проектов на Composer. Ключ require показывает минимальную и максимальную поддерживаемую версию PHP. Используйте composer check-platform-reqs для выявления несоответствий.
Для систем с вручную подключаемыми библиотеками изучите include и require файлы на использование функций, которые были удалены или изменены в новых версиях PHP. Например, функции each() и create_function() удалены после PHP 7.2.
Тестирование кода на новой версии PHP желательно проводить в изолированной среде, например через Docker. Образ php:8.2-cli позволяет выявить синтаксические и совместимые ошибки без воздействия на рабочий сервер.
Используйте статический анализатор кода, например PHPStan или Psalm. Они выявляют несовместимости типов, устаревшие конструкции и вызовы функций, которые могут ломаться при обновлении версии PHP.
Для фреймворков проверьте официальные требования. Laravel версии 9 требует PHP 8.0+, Symfony 6 – PHP 8.1+. Несоответствие версий может приводить к ошибкам автозагрузки и некорректной работе зависимостей.
Документируйте найденные ограничения и зависимости. Создайте таблицу с версиями PHP и критичными компонентами, чтобы при обновлении минимизировать риски простоя и обеспечить план совместимости.
Создание резервной копии конфигураций и сайтов

Перед обновлением PHP важно зафиксировать текущее состояние сервера и сайтов. Начните с резервного копирования конфигурационных файлов веб-сервера и PHP. Для Apache сохраните /etc/apache2/apache2.conf и папку /etc/apache2/sites-available/. Для Nginx – /etc/nginx/nginx.conf и /etc/nginx/sites-available/. Конфигурации PHP хранятся в /etc/php/{версия}/fpm/php.ini и /etc/php/{версия}/cli/php.ini.
Резервирование сайтов требует копирования корневых директорий. Например, для сайтов в /var/www/ выполните команду:
rsync -av --progress /var/www/ /backup/www/
Она сохраняет структуру каталогов, права доступа и символьные ссылки.
Резервные копии баз данных выполняются отдельно. Для MySQL/MariaDB используйте:
mysqldump -u root -p --all-databases > /backup/db/all_databases.sql
Для PostgreSQL:
pg_dumpall -U postgres > /backup/db/all_databases.sql
Организуйте резервные копии по таблице для контроля:
| Тип данных | Путь / команда | Примечания |
|---|---|---|
| Конфигурация Apache | /etc/apache2/ | apache2.conf + sites-available |
| Конфигурация Nginx | /etc/nginx/ | nginx.conf + sites-available |
| Конфигурация PHP | /etc/php/{версия}/ | fpm/php.ini и cli/php.ini |
| Сайты | /var/www/ | rsync для сохранения структуры и прав |
| Базы данных MySQL | mysqldump | —all-databases |
| Базы данных PostgreSQL | pg_dumpall | Все базы пользователя postgres |
Собранные резервные копии храните на отдельном диске или внешнем сервере. Перед обновлением PHP убедитесь, что каждая копия проверена на целостность и возможность восстановления.
Обновление списка пакетов в системе

Перед обновлением PHP необходимо синхронизировать локальный индекс пакетов с репозиториями. В системах на базе Debian и Ubuntu это выполняется командой sudo apt update. Она скачивает актуальные метаданные и версии пакетов, что гарантирует установку последних исправлений и зависимостей.
Для CentOS, RHEL и AlmaLinux используется sudo dnf makecache или sudo yum makecache, что создаёт кэш информации о доступных пакетах и ускоряет последующие операции обновления.
После обновления списка пакетов рекомендуется выполнить apt list --upgradable или dnf check-update, чтобы увидеть доступные версии для обновления PHP и связанных библиотек. Это позволяет заранее оценить, какие пакеты будут затронуты, и избежать конфликтов.
Для автоматизации регулярного обновления списка пакетов можно настроить cron-задачу, которая запускает apt update или dnf makecache с нужной периодичностью. Это особенно важно на серверах с критическими приложениями, чтобы минимизировать риск установки устаревших компонентов.
Установка репозитория с нужной версией PHP

Для установки конкретной версии PHP на сервере необходимо подключить официальный репозиторий, предоставляющий актуальные пакеты. На большинстве дистрибутивов Linux рекомендуется использовать репозиторий Ondřej Surý для Ubuntu/Debian или Remi для CentOS/RHEL.
Пример для Ubuntu 22.04:
- Установите необходимые утилиты для работы с репозиториями:
sudo apt update sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https -y
- Добавьте репозиторий PHP от Ondřej Surý:
sudo add-apt-repository ppa:ondrej/php sudo apt update
- Проверьте доступные версии PHP:
apt-cache show php | grep Version
Для CentOS 8 / RHEL 8:
- Установите EPEL и REMI репозитории:
sudo dnf install epel-release -y sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
- Включите модуль с нужной версией PHP, например PHP 8.2:
sudo dnf module reset php -y sudo dnf module enable php:remi-8.2 -y
- Обновите кэш пакетов и проверьте доступные версии:
sudo dnf makecache sudo dnf list php\*
После подключения репозитория сервер будет получать обновления именно той версии PHP, которую вы указали, что упрощает управление зависимостями и совместимостью приложений.
Рекомендуется всегда проверять совместимость установленных расширений PHP с выбранной версией перед обновлением.
Пошаговая установка новой версии PHP

1. Проверьте текущую версию PHP командой php -v. Это поможет убедиться, что обновление необходимо и определить совместимость приложений.
2. Создайте резервную копию конфигурационных файлов PHP, включая php.ini и файлы в папке /etc/php/, чтобы сохранить текущие настройки.
3. Добавьте репозиторий с актуальными версиями PHP. Для Ubuntu используйте sudo add-apt-repository ppa:ondrej/php и обновите список пакетов sudo apt update.
4. Установите новую версию PHP, например, sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql. Выбирайте модули в зависимости от используемых приложений.
5. Обновите конфигурацию веб-сервера. Для Nginx отредактируйте fastcgi_pass в блоке server, указав путь к новому PHP-FPM сокету, например unix:/run/php/php8.2-fpm.sock;.
6. Перезапустите веб-сервер и PHP-FPM: sudo systemctl restart nginx и sudo systemctl restart php8.2-fpm.
7. Проверьте активную версию PHP командой php -v и создайте тестовый файл phpinfo(), чтобы убедиться, что новые модули загружены и конфигурация применена корректно.
8. При необходимости перенесите индивидуальные настройки из старой версии PHP в php.ini и протестируйте критичные функции приложений для выявления несовместимостей.
Переключение версии PHP в настройках веб-сервера

Для изменения версии PHP сначала определите, какой веб-сервер используется: Apache, Nginx или LiteSpeed. В Apache управление версиями PHP обычно осуществляется через модуль mod_php или через PHP-FPM. Для mod_php достаточно в конфигурационном файле httpd.conf или .htaccess указать нужную версию, например: AddHandler application/x-httpd-php8 .php.
Если используется PHP-FPM, необходимо указать соответствующий пул в файле конфигурации виртуального хоста, например: ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1, где порт 9000 соответствует выбранной версии PHP-FPM. После изменений обязательно выполнить перезапуск Apache командой systemctl restart apache2 или service apache2 restart.
В Nginx переключение версии PHP выполняется через настройку fastcgi_pass в блоке server или location ~ \.php$. Укажите сокет или порт нужного PHP-FPM, например: fastcgi_pass unix:/run/php/php8.2-fpm.sock;. После сохранения изменений примените их командой systemctl reload nginx.
В панелях управления, таких как cPanel или Plesk, версия PHP меняется через графический интерфейс. В cPanel это раздел MultiPHP Manager, где можно выбрать версию для конкретного домена. В Plesk необходимо перейти в PHP Settings и указать нужный интерпретатор для сайта.
После переключения версии PHP рекомендуется проверить активную версию через phpinfo() или командой php -v в консоли. Это гарантирует, что веб-сервер использует корректный интерпретатор, а скрипты совместимы с новой версией.
Тестирование работы сайтов после обновления

После обновления версии PHP критически важно проверить корректность работы всех компонентов сайта. Неправильная работа может проявляться через ошибки 500, белые страницы или некорректное отображение динамического контента.
Рекомендуется выполнить следующие шаги:
-
Проверка журналов ошибок PHP: активируйте отображение ошибок или просмотрите лог-файлы (обычно
error_logили/var/log/php-fpm.log), чтобы выявить устаревшие функции или синтаксические несовместимости. -
Тестирование ключевых страниц: проверьте главную страницу, формы обратной связи, корзину и личный кабинет. Любая нестабильность может указывать на несовместимость кода с новой версией PHP.
-
Проверка плагинов и расширений: убедитесь, что все используемые модули (например, для CMS) совместимы с текущей версией PHP. Старые расширения могут вызывать фатальные ошибки.
-
Автоматизированное тестирование: если есть unit-тесты или интеграционные тесты, запустите их. Обратите внимание на предупреждения
E_DEPRECATEDиE_NOTICE, которые сигнализируют о потенциальных проблемах в будущем. -
Проверка производительности: замерьте время загрузки страниц и потребление памяти. Иногда новая версия PHP улучшает или ухудшает производительность отдельных участков кода.
После выявления ошибок фиксируйте их и повторно тестируйте, пока все функции сайта не будут работать стабильно. Рекомендуется вести документацию изменений и тестов для последующего мониторинга совместимости с будущими обновлениями PHP.
Вопрос-ответ:
Как проверить текущую версию PHP на сервере перед обновлением?
Для проверки версии PHP на сервере можно воспользоваться командой php -v в терминале. Она выводит информацию о текущей установленной версии, а также о сборке и установленных расширениях. Кроме того, можно создать файл info.php с содержимым <?php phpinfo(); ?> и открыть его через браузер. В выводе будет указана версия PHP и другие параметры конфигурации, что помогает понять, нужна ли обновление.
Можно ли обновить PHP без перезапуска веб-сервера?
В большинстве случаев после обновления PHP требуется перезапуск веб-сервера или службы PHP-FPM, чтобы изменения вступили в силу. Если сервер использует модульный режим (например, Apache с mod_php), достаточно перезапустить Apache. В случае PHP-FPM необходимо перезапустить соответствующую службу. Без этого новые версии PHP не будут активны, а сайт продолжит использовать старую версию.
Какие риски могут возникнуть при обновлении PHP на рабочем сервере?
Обновление PHP может привести к несовместимости с существующими скриптами или плагинами. Некоторые функции и расширения могут быть удалены или изменены в новой версии, что вызовет ошибки при выполнении сайта. Чтобы избежать проблем, рекомендуется сначала тестировать обновление на копии сервера или локальной среде. Также важно создать резервную копию файлов и базы данных перед любыми изменениями.
Как обновить PHP через командную строку на сервере под Linux?
Для обновления PHP на Linux-сервере обычно используют пакетный менеджер, например apt для Debian/Ubuntu или yum/dnf для CentOS/Fedora. Сначала добавляют репозиторий с нужной версией PHP, затем выполняют команду установки или обновления. Например, на Ubuntu это может быть sudo apt update && sudo apt install php8.2. После завершения установки нужно проверить версию и перезапустить веб-сервер.
Как убедиться, что все расширения PHP обновились вместе с основной версией?
После обновления PHP следует проверить список подключенных расширений с помощью команды php -m или файла phpinfo(). Некоторые расширения могут требовать отдельной установки для новой версии PHP, особенно если они предоставляются через отдельные пакеты. В таких случаях нужно установить их заново, используя пакетный менеджер, например sudo apt install php8.2-mysql для работы с базой данных MySQL.
Можно ли обновить PHP на сервере без доступа к командной строке?
Да, обновление PHP возможно и через панель управления хостингом. Многие хостинги предоставляют интерфейс, где можно выбрать нужную версию PHP для сайта. Обычно это делается в разделе настроек PHP или конфигурации домена. После выбора версии достаточно сохранить изменения, и сервер автоматически начнёт использовать новую версию. После этого рекомендуется проверить работу сайта, чтобы убедиться, что все скрипты корректно работают с обновлённой версией.
Что нужно проверить перед обновлением PHP на сервере?
Перед сменой версии важно убедиться, что используемые скрипты и системы управления контентом поддерживают выбранную версию PHP. Следует проверить требования установленных плагинов и модулей, а также сделать резервную копию сайта и базы данных. Это позволит быстро восстановить прежнее состояние в случае ошибок после обновления. Также полезно протестировать сайт на тестовом окружении с новой версией PHP, чтобы заранее выявить возможные конфликты или устаревшие функции.
