Назад | Перейти на главную страницу

Как мне перейти на последнюю версию PHP в CentOS с помощью yum?

Я нашел несколько сообщений об этом в блоге, но это скорее отсутствие описания возможных побочных эффектов.

Я действительно мог бы использовать некоторые подробности об этих шагах:

  1. Как добавить репо, предоставляющее PHP 5.4, в yum
  2. Может ли это легко заменить текущую версию PHP в CentOS?
  3. Как я могу вернуться к официальному репо, если он поддерживает PHP 5.4? (текущая версия 5.3.3 в моей системе)
  4. Будет ли вероятность поломки модулей PHP, которые я использую в настоящее время?

Заметка

Люди успешно обновились тем же методом на более новых версиях и предлагают удалить определенные версии в вопросе. Хотя неплохо фиксировать версии на случай, если новые версии действительно что-то сломают, я бы хотел оставить последнюю успешную версию, предложенную сообществом в качестве примечания.

Не стесняйтесь обновлять это, если вы успешно обновили другие версии.

Я следовал инструкциям из Установите Apache / PHP 5.4.10 на Fedora 17/16, CentOS / RHEL 6.3 / 5.8 с небольшой доработкой. Это заняло примерно 10 минут. Мои точные команды показаны ниже. Обратите внимание, что первая команда должна быть изменена по сравнению с тем, что показано в статье. Изменение было от epel-release-6-7.noarch.rpm к epel-release-6-8.noarch.rpm.

  1. Как добавить репо, которое предоставляет PHP 5.4, в yum?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. Может ли это без проблем заменить текущую версию PHP в CentOS? Для меня сработали следующие команды, и ни одна из моих существующих веб-страниц PHP не сломалась. Ваш пробег может отличаться.

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. Как я могу вернуться к официальному репо, если он поддерживает PHP5.4? Я не тестировал команды для удаления и повторной установки PHP из репозиториев CentOS, но они должны работать.

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    
  4. Будет ли какая-то возможность сломать модули PHP, которые я использую в настоящее время? Да. При использовании последней версии CentOS (6.2?) С Zend, установленной с помощью установщика Zend, вышеуказанное обновление сломало Zend.

Все вышеперечисленные команды выполнялись как root. Лучше всего войти в систему как непривилегированный пользователь и использовать sudo. (Это виртуальная машина разработки с текущим снимком состояния ...)

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

Улучшение по сравнению с другим ответом Webtatic:

1. Использование руководства по http://www.webtatic.com/packages/php54/:

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

2. Сначала вам нужно увидеть, какие существующие установленные пакеты необходимо заменить, вы можете сделать это, используя оболочку yum, чтобы объединить удаление php-common и установку php54w-common в одной транзакции (поэтому общие зависимости не удаляются)

yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

Не говорите «y» в результатах, но обратите внимание на все пакеты, упомянутые в разделе «Удаление зависимостей», например

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

Если в этом списке есть пакеты, отличные от php *, вы не можете легко переключиться на Webtatic PHP 5.4, но вам придется изучить альтернативы. Webtatic имеет заменяющие пакеты для всех базовых пакетов php (для подтверждения см. Пакеты, перечисленные на странице, ссылка на которую указана в 1.), поэтому проблем возникнуть не должно, если только вы не используете другие сторонние репозитории, в которых установлены пакеты в зависимости от конкретной версии php. установлены.

Для остальной части установки (все еще в оболочке yum) вы просто удалите эти пакеты и установите их аналоги php54w- *:

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

После этого вы должны увидеть только те пакеты, которые вы настроили для удаления и установки в списке, и вы можете подтвердить установку для переключения. Любые службы, которые в настоящее время работают с загруженным php, необходимо будет перезапустить, например httpd или php-fpm.

Что касается «плавности», любые изменения программного обеспечения, происходящие, пока пользователи могут получить доступ к веб-сайту, должны иметь полностью понятные последствия. Общие библиотеки, удаляемые и добавляемые, когда процесс еще не загрузил их, потенциально могут загружаться, пока общей библиотеки нет. Такие обновления программного обеспечения лучше проводить в автономном режиме и желательно сначала протестировать на непроизводственной машине, чтобы убедиться, что процесс работает должным образом.

3. Чтобы переключиться на гипотетический базовый пакет php54 CentOS (в CentOS 5 используется префикс php53), вы просто выполняете вышеуказанные шаги, заменяя удаление php на удаление php54w и установку php54w на установку php54, например.

yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

Однако, что касается перехода на гипотетический базовый php54, для некоторых пакетов, вероятно, не будет альтернатив (например, в CentOS 5 не было расширения php53-pecl-memcache), а у Webtatic есть пакеты, которые недоступны в базе CentOS (например, php54w -pecl-zendopcache). Если они отсутствуют, то обычно у вас нет другого выбора, кроме как использовать pecl напрямую для их установки.

4. Любое обновление PHP может привести к ошибкам, и веб-сайты следует повторно тестировать. Это не относится к Webtatic, это общая идея о том, что новые функции вносят новые ошибки.

В отличие от репозитория Реми в принятом ответе, репозиторий Webtatic EL6 никогда не использует те же имена пакетов, что и базовые репозитории CentOS, поэтому не будет отменять установку / обновление пакетов, на которые вы не собираетесь переключаться, и поэтому включен по умолчанию.

Отказ от ответственности: я владелец / сопровождающий Webtatic

здесь вы можете найти php 5.4.9 для установки yum:

http://www.webtatic.com/packages/php54/

вы можете выполнить команду «rpm -qa | grep php», чтобы увидеть все ваши текущие пакеты php, и команду «rpm -e» для удаления. Я не знаю ваших текущих модулей, но перед обновлением стоит протестировать.