Jak zaktualizować do najnowszej wersji PHP w CentOS z yum?

22

Znalazłem kilka postów na ten temat na blogu, ale to raczej brak opisów możliwych skutków ubocznych.

Naprawdę przydałoby mi się kilka szczegółowych informacji na temat tych kroków:

  1. Jak dodać repo, które zapewnia PHP 5.4 do yum
  2. Czy to może płynnie zastąpić bieżącą wersję PHP w CentOS?
  3. Jak mogę wrócić do oficjalnego repozytorium, które obsługuje PHP 5.4? (obecnie 5.3.3 w moim systemie)
  4. Czy będzie jakiś potencjał do zepsucia modułów PHP, których obecnie używam?

Uwaga

Ludzie pomyślnie zaktualizowali tę samą metodę w nowszych wersjach i sugerują usunięcie określonych wersji w pytaniu. Chociaż dobrze jest sprecyzować wersje na wypadek, gdyby nowsze wersje rzeczywiście coś zepsuły, chciałbym zachować najnowszą udaną wersję sugerowaną przez społeczność jako notatkę.

Zaktualizuj to, jeśli pomyślnie zaktualizowałeś inne wersje.

  • Wersje PHP: 5.4, 5.5, 5.6
  • Wersja CentOS: 5, 6
Vicary
źródło

Odpowiedzi:

19

Postępowałem zgodnie z instrukcjami z Instaluj Apache / PHP 5.4.10 na Fedorze 17/16, CentOS / RHEL 6.3 / 5.8 z niewielką modyfikacją. Zajęło to może 10 minut. Moje dokładne polecenia pokazano poniżej. Zauważ, że pierwsze polecenie musiało zostać zmienione z tego, co pokazano w artykule. Zmiana była od epel-release-6-7.noarch.rpmdo epel-release-6-8.noarch.rpm.

  1. Jak dodać repo, które zapewnia PHP 5.4 do 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. Czy to może płynnie zastąpić bieżącą wersję PHP w CentOS? Dla mnie następujące polecenia działały i żadna z moich istniejących stron PHP nie uległa awarii. Twój przebieg może się różnić.

    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. Jak mogę wrócić do oficjalnego repozytorium, które obsługuje PHP5.4? Nie testowałem poleceń usuwania i ponownej instalacji PHP z repozytoriów CentOS, ale powinny one działać.

    # 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. Czy będzie jakiś potencjał do zepsucia modułów PHP, których obecnie [sic] używam? Tak. Używając najnowszej wersji CentOS (6.2?) Z zainstalowanym Zendem za pomocą instalatora Zend, powyższa aktualizacja złamała Zend.

Wszystkie powyższe polecenia zostały uruchomione jako root. Najlepszą praktyką jest logowanie się jako użytkownik nieuprzywilejowany i używanie sudo. (To jest programista VM z bieżącą migawką ...)

Ponadto NIE włączaj domyślnie repozytorium Remi - w przeszłości byłem sprytny i domyślnie go włączałem i wszystko się zepsuło, nawet z priorytetem repozytorium.

Jeff Benshetler
źródło
3
Z remikiem rzeczy często stają się brzydkie. Wolę używać repozytorium iuscommunity dla aktualnego php. Innym sposobem jest użycie repozytorium serwera Zend, ale wydaje mi się to trochę narzutem.
Kazimieras Aliulis
1
@KazimierasAliulis Niestety, repozytorium IUS wywołuje piekło zależności przy użyciu niekompatybilnych nazw pakietów i plików. Nie mogę tego zalecić.
Michael Hampton
Bardzo dokładny opis. Ponieważ nie mam kodu związanego z silnikiem Zend, w moim przypadku nie powinno to mieć znaczenia, prawda?
Vicary
1
@MichaelHampton Używam yum --enablerepo=remi updatei dba o wszystkie powiązane pakiety php, wygląda na lepsze rozwiązanie. Serwer działa bezproblemowo od kilku dni, dzięki za wszystkie informacje.
Namiestnik,
1
Uwaga: facet zapomniał dodać phpdo listy instalacji, co spowodowało wiele problemów, ponieważ apache nie obsługiwał plików php, więc nie zapomnij dodać tego podczas korzystania
eric.itzhak
9

Ulepszenie w stosunku do innej odpowiedzi Webtatic:

1. Korzystając z przewodnika na http://www.webtatic.com/packages/php54/ :

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

2) Najpierw musisz zobaczyć, jakie istniejące zainstalowane pakiety wymagają wymiany, możesz to zrobić, używając powłoki yum do połączenia usuwania php-common i instalacji php54w-common w jednej transakcji (więc współdzielone zależności nie są usuwane)

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

Nie mów „y” do wyników, ale zwróć uwagę na wszystkie pakiety wymienione w „Usuwanie zależności”, np

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

Jeśli na tej liście znajdują się inne pakiety niż php *, nie możesz płynnie przejść na Webtatic PHP 5.4, ale będziesz musiał zbadać alternatywy. Webtatic ma pakiety zastępcze dla wszystkich podstawowych pakietów php (potwierdzenia znajdują się w paczkach wymienionych na stronie, do której prowadzi link w punkcie 1.), więc nie powinno być problemów, chyba że użyjesz innych repozytoriów innych firm, które mają zainstalowane pakiety zależne od konkretnej wersji php zainstalowany.

Przez resztę instalacji (nadal w yum shell), po prostu usuwasz te pakiety i instalujesz ich odpowiedniki 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

Powinieneś wtedy zobaczyć tylko pakiety, które ustawiłeś do usunięcia i zainstalowania na liście, i możesz potwierdzić instalację, aby przełączyć. Wszelkie usługi aktualnie uruchomione z załadowanym php będą musiały zostać zrestartowane, na przykład httpd lub php-fpm.

Ponieważ jest to „płynne”, wszelkie zmiany oprogramowania zachodzące, gdy użytkownicy mogą uzyskać dostęp do strony internetowej, powinny być w pełni zrozumiałe. Udostępniane biblioteki usuwane i dodawane, gdy proces jeszcze ich nie załadował, mogą potencjalnie zostać załadowane, gdy biblioteki udostępnionej nie ma. Lepiej jest przeprowadzać aktualizacje oprogramowania w trybie offline, a najlepiej najpierw przetestować je na maszynie innej niż produkcyjna, aby sprawdzić, czy proces działa zgodnie z oczekiwaniami.

3) Aby przełączyć się na hipotetyczny podstawowy pakiet php54 CentOS (CentOS 5 używał prefiksu php53), wystarczy uruchomić powyższe kroki, zastępując usunięcie php usunięciem php54w, i instalację php54w instalacją php54, np.

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

Jednak jeśli chodzi o przejście na hipotetyczną bazę php54, prawdopodobnie nie będzie alternatyw dla niektórych pakietów (np. Nie było rozszerzenia php53-pecl-memcache w CentOS 5), a Webtatic ma pakiety, które nie są dostępne w bazie CentOS (np. Php54w -pecl-zendopcache). Jeśli ich brakuje, zwykle nie masz innej opcji niż bezpośrednie użycie pecl do ich zainstalowania.

4 Każda aktualizacja PHP może wprowadzać błędy, a strony internetowe powinny być ponownie testowane. Nie jest to specyficzne dla Webtatic, ale ogólny pomysł, że nowe funkcje wprowadzają nowe błędy.

W przeciwieństwie do repozytorium Remiego w zaakceptowanej odpowiedzi, repozytorium Webtatic EL6 nigdy nie używa takich samych nazw pakietów jak repozytoria podstawowe CentOS, więc nie zastąpi instalacji / aktualizacji pakietów, na które nie zamierzasz się przełączać, i jako takie jest domyślnie włączone.

Oświadczenie: Jestem właścicielem / opiekunem Webtatic

Andy
źródło
Dzięki temu mniam powłoka jest naprawdę dobra do obserwacji zależności.
Wikariusz,
@ Andy, bardzo szczegółowy napisać, dziękuję. Jak zmienić domyślne cli (i tylko cli) PHP na 5.4 w CentOS 6?
Gaia
0

możesz znaleźć php 5.4.9 tutaj dla instalacji yum:

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

możesz zrobić „rpm -qa | grep php”, aby zobaczyć wszystkie swoje obecne pakiety php i „rpm -e” do usunięcia. nie znam twoich obecnych modułów, ale warto je przetestować przed aktualizacją.

TheDayIsDone
źródło
W pewnym sensie odpowiedziałeś 1. Jeśli chodzi o konserwację serwera, to nie jest po prostu jego instalacja i uruchamianie testów, naprawdę mógłbym użyć więcej informacji przed zrobieniem czegokolwiek.
Vicary