Як оновити до останньої версії PHP в CentOS з yum?


22

Я знайшов кілька записів у цьому блозі, але це досить брак описів можливих побічних ефектів.

Я дійсно міг би скористатися деякими деталями цих кроків:

  1. Як додати РЕПО, що забезпечує PHP 5,4 в ям
  2. Чи може це легко замінити поточну версію PHP в CentOS?
  3. Як я можу перейти до офіційного репо, коли він підтримує PHP 5.4? (поточна 5.3.3 в моїй системі)
  4. Чи буде якийсь потенціал зламати модулі PHP, якими я зараз користуюся?

Примітка

Люди успішно модернізували тим самим методом новіші версії, і пропонують видалити конкретні версії із запитання. Хоча добре закріпити версії у випадку, якщо новіші версії насправді щось зламають, я хотів би зберегти останню успішну версію, запропоновану громадою, як примітку.

Не соромтеся оновлювати це, якщо ви успішно оновили інші версії.

  • Версії PHP: 5.4, 5.5, 5.6
  • Версія CentOS: 5, 6

Відповіді:


19

Я дотримувався вказівок Install 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, які я [sic] використовую зараз? Так. Використовуючи останню версію CentOS (6.2?) Із Zend, встановленим за допомогою встановлення Zend, вищевказане оновлення зламало Zend.

Усі вищезазначені команди виконувались як root. Найкраща практика - увійти як непривілейований користувач та користуватися ним sudo. (Це VM розробки з поточним знімком ...)

Крім того, НЕ вмикайте сховище Remi за замовчуванням - в минулому я розумний і вмикав його за замовчуванням, і все зламалося, навіть з пріоритетом сховища.


3
Ремі часто стають некрасивими з ремі. Я вважаю за краще використовувати сховище iuscommunity для оновлення php. Інший спосіб - використовувати репо-сервер Zend, але це здається мені трохи накладним.
Казім'єрас Аліуліс

1
@KazimierasAliulis На жаль, IUS repo викликає залежність, використовуючи несумісні імена пакунків та файлів. Я не можу рекомендувати його використовувати.
Майкл Хемптон

Дуже ретельний опис. Оскільки у мене немає коду, пов’язаного з двигуном Zend, він не повинен мати значення в моєму випадку, правда?
Vicary

1
@MichaelHampton, який я використовую, yum --enablerepo=remi updateі він піклується про всі пов'язані пакети php, виглядає як краще рішення. Сервер працює без проблем вже кілька днів, дякую за всю інформацію.
Вікарій

1
Примітка: хлопець забув додати phpдо списку встановлення, що викликало у мене багато проблем, оскільки apache не обслуговував файли php, тому не забудьте додати це під час використання
eric.itzhak

9

Покращення в порівнянні з іншими відповідями Webtatic:

1. Використання посібника з веб-сайту http://www.webtatic.com/packages/php54/ :

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

2. Спочатку потрібно переглянути, які існуючі встановлені пакети потребують заміни. Ви можете це зробити, використовуючи yum shell, щоб поєднати видалення 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


Спосіб шумної шкаралупи дійсно хороший для спостереження залежностей, дякую.
Вікарій

@Andy, чудово докладно написати, дякую. Як змінити кліп за замовчуванням (і лише кліп) PHP на 5,4 в CentOS 6?
Гайя

0

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

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

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


Ви ніби не відповіли 1. Що стосується обслуговування сервера, це не просто його встановити та запустити тести, я дійсно міг би отримати більше інформації, перш ніж робити щось.
Vicary
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.