Обновите PHP до новой версии

Вопрос или проблема

На моем сервере CentOS7 установлена очень старая версия PHP (v7.2.10). Я пытаюсь обновить до PHP8, но у меня возникают серьезные проблемы. На моем сервере установлен PHP Version Switcher, и при попытке установить PHP8 я постоянно получаю ошибку.

Затем я попытался использовать yum для установки PHP8. Он, кажется, установился нормально, но php -v все равно возвращает 7.2.10. Я выполнил yum list installed | grep php, и он вернул:

cwp-suphp.x86_64                      0.7.2-3                        @cwp
cwpphp.x86_64                         7.2.30-3                       @cwp
php.x86_64                            8.0.30-6.el7.remi              @remi-php80
php-cli.x86_64                        8.0.30-6.el7.remi              @remi-php80
php-common.x86_64                     8.0.30-6.el7.remi              @remi-php80
php-pdo.x86_64                        8.0.30-6.el7.remi              @remi-php80
php-pgsql.x86_64                      8.0.30-6.el7.remi              @remi-php80
php-sodium.x86_64                     8.0.30-6.el7.remi              @remi-php80
php72-php-common.x86_64               7.2.34-10.el7.remi             @remi-safe
php72-php-json.x86_64                 7.2.34-10.el7.remi             @remi-safe
php72-php-pdo.x86_64                  7.2.34-10.el7.remi             @remi-safe
php72-php-pgsql.x86_64                7.2.34-10.el7.remi             @remi-safe
php72-runtime.x86_64                  2.0-1.el7.remi                 @remi-safe

Также выполнение rpm -q --filesbypkg php72-php-pdo-7.2.34-10.el7.remi.x86_64 и rpm -q --filesbypkg php-pdo-8.0.30-6.el7.remi.x86_64 возвращает:

php72-php-pdo             /etc/opt/remi/php72/php.d/20-pdo.ini
php72-php-pdo             /etc/opt/remi/php72/php.d/20-sqlite3.ini
php72-php-pdo             /etc/opt/remi/php72/php.d/30-pdo_sqlite.ini
php72-php-pdo             /opt/remi/php72/root/usr/lib64/php/modules/pdo.so
php72-php-pdo             /opt/remi/php72/root/usr/lib64/php/modules/pdo_sqlite.so
php72-php-pdo             /opt/remi/php72/root/usr/lib64/php/modules/sqlite3.so

php-pdo                   /etc/php-zts.d/20-pdo.ini
php-pdo                   /etc/php-zts.d/20-sqlite3.ini
php-pdo                   /etc/php-zts.d/30-pdo_sqlite.ini
php-pdo                   /etc/php.d/20-pdo.ini
php-pdo                   /etc/php.d/20-sqlite3.ini
php-pdo                   /etc/php.d/30-pdo_sqlite.ini
php-pdo                   /usr/lib64/php-zts/modules/pdo.so
php-pdo                   /usr/lib64/php-zts/modules/pdo_sqlite.so
php-pdo                   /usr/lib64/php-zts/modules/sqlite3.so
php-pdo                   /usr/lib64/php/modules/pdo.so
php-pdo                   /usr/lib64/php/modules/pdo_sqlite.so
php-pdo                   /usr/lib64/php/modules/sqlite3.so

Выполнение systemctl status cwp-phpfpm.service возвращает:

● cwp-phpfpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/cwp-phpfpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2024-12-20 03:51:16 EST; 1 months 16 days ago
 Main PID: 12524 (php-fpm)
   CGroup: /system.slice/cwp-phpfpm.service
           └─12524 php-fpm: master process (/usr/local/cwp/php71/etc/php-fpm.conf)

Так что кажется, что PHP 7.2 и 8.0 оба установлены. Как заставить CentOS использовать PHP8 вместо PHP7.2?

Ответ или решение

Чтобы обновить PHP до версии 8 на вашем сервере CentOS 7, необходимо выполнить ряд последовательных шагов, чтобы убедиться, что все компоненты правильно настроены. Из предоставленного вами описания видно, что на вашем сервере установлены обе версии PHP: 7.2.10 и 8.0. Цель состоит в том, чтобы настроить систему так, чтобы она использовала PHP 8 в качестве основной версии. Ниже приведены подробные инструкции по выполнению этой задачи.

Теория

Серверы CentOS часто управляются с помощью пакетного менеджера yum, который позволяет устанавливать и обновлять пакеты программного обеспечения. При работе с PHP у вас может быть несколько установок разных версий PHP, каждая из которых могла быть установлена из разных репозиториев, таких как Remi, который вы используете для PHP 8. Важно понимать, что версии PHP могут работать параллельно, но только одна из них может быть установлена как система по умолчанию, которой управляет команда php в консоли.

Пример

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

Применение

  1. Резервное копирование и проверка конфигурации:
    Прежде чем вносить изменения, создайте резервные копии всех конфигурационных файлов, связанных с PHP и вашим веб-сервером, такими как php.ini и файлы конфигурации Apache или Nginx. Это поможет избежать потери важной конфигурации.

  2. Удаление старых символических ссылок:
    Проверьте, куда указывает символическая ссылка для PHP в вашей системе. Используйте команду:

    ls -la /usr/bin/php

    Если она указывает на старую версию PHP, удалите её:

    sudo rm /usr/bin/php
  3. Создание новой символической ссылки:
    Найдите путь к бинарному файлу PHP 8 и создайте новую символическую ссылку:

    sudo ln -s /usr/bin/php8 /usr/bin/php

    Убедитесь, что путь правильный. Вы можете найти текущий путь с помощью команды which php8.

  4. Проверка системных сервисов PHP:
    Учитывая, что ваш сервер использует службу cwp-phpfpm, важно, чтобы она была настроена на использование правильной версии PHP. Проверьте конфигурацию php-fpm:

    sudo systemctl edit cwp-phpfpm.service

    Измените путь к конфигурационному файлу на тот, который использует PHP 8. Убедитесь, что используете файлы конфигурации для PHP 8.

  5. Перезапуск сервисов:
    Перезапустите все связанные службы, чтобы изменения вступили в силу:

    sudo systemctl restart cwp-phpfpm.service
    sudo systemctl restart httpd.service # или nginx, если вы используете его
  6. Подтверждение установок:
    После всех изменений выполните команду php -v снова, чтобы убедиться, что система теперь использует PHP 8. Также рекомендуется проверить работу вашего веб-сайта или приложений на новой версии PHP для проверки совместимости.

  7. Обновление расширений и конфигураций:
    Убедитесь, что все расширения PHP также обновлены и настроены для работы с PHP 8. Выполните:

    yum list installed | grep php

    Обратите внимание на наличие необходимых расширений и их совместимость.

Заключение

Использование разных версий PHP на одном сервере может быть сложным, особенно в случае, если необходимо переключаться между ними. Важно точно следовать инструкциям и убедиться, что все элементы системы правильно настроены для использования новой версии. Если вы столкнетесь с трудностями или неожиданностями, рекомендуется обратиться к документации PHP или поддержки сообщества для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...