CentOS'taki en son PHP sürümüne yum ile nasıl yükseltirim?


22

Bununla ilgili bazı blog yazıları buldum, ancak olası yan etkilerle ilgili açıklamaların bulunmaması.

Bu adımlarda ayrıntılı olarak gerçekten biraz kullanabilirsiniz:

  1. PHP içine 5.4 sağlayan bir repoyu yum'a ekleme
  2. Bu, CentOS'taki mevcut PHP versiyonunu sorunsuz bir şekilde değiştirebilir mi?
  3. PHP 5.4'ü desteklediğinde resmi depoya nasıl geri dönebilirim? (sistemimde mevcut 5.3.3)
  4. Şu anda kullandığım PHP modüllerini kırma potansiyeli olacak mı?

Not

İnsanlar daha yeni sürümlerde aynı yöntemle başarılı bir şekilde yükseltme yaptı ve sorudaki belirli sürümlerin kaldırılmasını önerdi. Yeni sürümlerin gerçekten bir şeyi kırması durumunda sürümleri belirlemek iyi olsa da, topluluk tarafından önerilen en son başarılı sürümün bir not olarak kalmasını isterim.

Diğer sürümlerde başarıyla yükselttiyseniz, bunu güncellemekten çekinmeyin.

  • PHP sürümleri: 5.4, 5.5, 5.6
  • CentOS sürümü: 5, 6

Yanıtlar:


19

Fedora 17/16, CentOS / RHEL 6.3 / 5.8’de Install Apache / PHP 5.4.10’dan gelen talimatları küçük bir değişiklikle izledim . Belki 10 dakika sürdü. Tam komutlarım aşağıda gösterilmiştir. İlk komutun, makalede gösterilenden farklı olması gerektiğine dikkat edin. Değişiklik oldu epel-release-6-7.noarch.rpmiçin epel-release-6-8.noarch.rpm.

  1. PHP 5.4'ü yum içine alan bir repo nasıl eklenir?

    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. Bu, CentOS'taki mevcut PHP versiyonunu sorunsuz bir şekilde değiştirebilir mi? Benim için aşağıdaki komutlar çalıştı ve mevcut PHP web sayfalarımın hiçbiri bozulmadı. Kilometreniz değişebilir.

    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'ü desteklediğinde resmi depoya nasıl geri dönebilirim? PHP'yi CentOS depolarından kaldırmak ve yeniden yüklemek için kullanılan komutları test etmedim, ancak bunlar çalışmalı.

    # 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. Şu anda kullanmakta olduğum PHP modüllerini kırma potansiyeli olacak mı? Evet. Zend, Zend yükleyicisini kullanarak yüklerken CentOS'un (6.2?) Yeni bir sürümünü kullanarak, yukarıdaki yükseltme Zend'i kırdı.

Yukarıdaki tüm komutlar olarak çalıştırıldı root. En iyi uygulama, ayrıcalıklı olmayan bir kullanıcı olarak giriş yapmak ve kullanmaktır sudo. (Bu, anlık görüntüye sahip bir geliştirme VM'sidir ...)

Ayrıca, Remi deposunu varsayılan olarak etkinleştirmeyin - geçmişte akıllıca davrandım ve varsayılan olarak etkinleştirdim ve işler bozuldu, depo önceliği olsa bile.


3
İşler genellikle remi ile çirkinleşir. İuscommunity deposunu güncel php için kullanmayı tercih ederim. Başka bir yol Zend server repo kullanmak, ancak benim için biraz yükü gibi görünüyor.
Kazimieras Aliulis

1
@KazimierasAliulis Maalesef IUS repo, uyumsuz paket ve dosya adları kullanarak bağımlılık cehennemi yaratır. Kullanmasını tavsiye edemem.
Michael Hampton

Çok ayrıntılı açıklama. Zend motoru ile ilgili bir kodum olmadığı için benim durumumda önemli olmamalı, değil mi?
Vicary

1
@MichaelHampton Kullanıyorum yum --enablerepo=remi updateve tüm ilgili php paketleriyle ilgileniyor, daha iyi bir çözüm gibi görünüyor. Sunucu birkaç gün boyunca sorunsuz çalışıyor, tüm bilgiler için teşekkürler.
Vicary

1
Not: adam phpapache php dosyalarını hizmet etmedi gibi bana sorunların bir sürü neden oldu yükleme listesine eklemek için unuttum , bu yüzden kullanırken bu eklemeyi unutmayın
eric.itzhak

9

Diğer Webtatik cevaplara göre bir gelişme:

1. Http://www.webtatic.com/packages/php54/ adresindeki kılavuzu kullanma :

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

2. Önce mevcut kurulu paketlerin değiştirilmesi gerektiğini görmeniz gerekir, bunu php-common kaldırma ve php54w-common yükleme işlemlerini bir işlemde birleştirmek için yum kabuk kullanarak yapabilirsiniz (böylece paylaşılan bağımlılıklar kaldırılmaz)

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

Sonuçlara "y" deyin, ancak "Bağımlılıkların giderilmesi" bölümünde belirtilen tüm paketlere dikkat edin, örn.

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

Bu listede php * dışında başka paketler varsa, sorunsuz bir şekilde Webtatic PHP 5.4'e geçiş yapamazsınız, ancak alternatifleri araştırmanız gerekir. Webtatic, tüm temel php paketleri için yedek paketlere sahiptir (onay için 1. sayfada belirtilen paketlere bakınız), bu nedenle belirli bir php sürümüne bağlı olarak kurulu paketlere sahip başka 3. taraf depoları kullanmıyorsanız, hiçbir sorun olmamalıdır. Kurulmuş.

Yüklemenin geri kalanında (hala yum kabukta), bu paketleri kaldırmanız ve php54w- * meslektaşlarını yüklemeniz yeterlidir:

> 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

Daha sonra yalnızca listeye kaldırılmak ve yüklenmek üzere ayarladığınız paketleri görmelisiniz ve geçişi için yüklemeyi onaylayabilirsiniz. Şu anda php yüklü olan tüm servislerin yeniden başlatılması gerekecektir, örneğin httpd veya php-fpm.

Bu durum 'kesintisiz' olduğu için, kullanıcılar web sitesine erişebilirken gerçekleşen tüm yazılım değişikliklerinin sonuçlarının tam olarak anlaşılması gerekir. Paylaşılan kitaplıklar, bir işlem henüz yüklenmediyse kaldırılıyor ve ekleniyor, paylaşılan kitaplık orada olmadığında potansiyel olarak yüklenebilir. Bu gibi çevrimdışı yazılım güncellemeleri yapmak daha iyidir ve tercihen işlemin beklendiği gibi çalıştığını doğrulamak için önce üretim dışı bir makinede test edilir.

3. Varsayımsal bir CentOS temel php54 paketine geçmek için (CentOS 5 kullanılmış php53 öneki), sadece php54w kaldırma ve

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

Bununla birlikte, varsayımsal temel php54'e geçiş için, bazı paketler için alternatif olmayabilir (örneğin, CentOS 5'te php53-pecl-memcache uzantısı yoktu) ve Webtatic, CentOS bazında bulunmayan paketlere sahip (örneğin, php54w -pecl-zendopcache). Eğer eksiklerse, genellikle yüklemek için doğrudan pecl kullanmaktan başka bir seçeneğiniz yoktur.

4. Herhangi bir PHP güncellemesi hataya neden olabilir ve web siteleri yeniden test edilmelidir. Bu Webtatik'e özgü değildir, ancak yeni özelliklerin yeni hatalar ortaya çıkardığı genel fikridir.

Remi'nin kabul edilen yanıttaki deposundan farklı olarak, Webtatic EL6 deposu asla CentOS temel depolarıyla aynı paket adlarını kullanmaz, bu nedenle geçmek istemediğiniz paketlerin kurulumunu / yükseltmesini geçersiz kılmaz ve varsayılan olarak etkinleştirilir.

Sorumluluk reddi: Webtatic’in sahibi / sahibiyim


Yum shell metodu dependancy gözlem için gerçekten çok iyi, teşekkürler.
Vicary,

@Andy, harika detaylı yaz, teşekkür ederim. CentOS 6'da PHP'nin varsayılan cli değerini (ve sadece cli değerini) 5.4 olarak nasıl değiştiririm?
Gaia,

0

Yum kurulumu için php 5.4.9 'u burada bulabilirsiniz:

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

Mevcut tüm php paketlerini görmek için bir "rpm -qa | grep php" ve kaldırmak için bir "rpm -e" yapabilirsiniz. Şu anki modüllerini bilmiyorum, ama yükseltme işleminden önce test etmeye değer.


Siz biraz cevap verdiniz 1. Sunucu bakımı söz konusu olduğunda, sadece yüklemek ve testleri çalıştırmak değildir, bir şey yapmadan önce daha fazla bilgi kullanabilirim.
Vicary,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.