Bagaimana cara meningkatkan ke versi PHP terbaru di CentOS dengan yum?

22

Saya menemukan beberapa posting blog tentang ini, tetapi agak kekurangan deskripsi tentang kemungkinan efek samping.

Saya benar-benar dapat menggunakan beberapa detail pada langkah-langkah ini:

  1. Bagaimana cara menambahkan repo yang menyediakan PHP 5.4 ke dalam yum
  2. Bisakah ini menggantikan versi PHP saat ini di CentOS?
  3. Bagaimana saya bisa kembali ke repo resmi ketika mendukung PHP 5.4? (5.3.3 saat ini di sistem saya)
  4. Apakah akan ada potensi untuk merusak modul PHP yang saya gunakan saat ini?

Catatan

Orang-orang berhasil ditingkatkan dengan metode yang sama pada versi yang lebih baru, dan menyarankan untuk menghapus versi tertentu dalam pertanyaan. Meskipun baik untuk menjabarkan versi jika versi yang lebih baru benar-benar merusak sesuatu, saya ingin menyimpan versi sukses terbaru yang disarankan oleh komunitas sebagai catatan.

Jangan ragu untuk memperbarui ini jika Anda berhasil memutakhirkan pada versi lain.

  • Versi PHP: 5.4, 5.5, 5.6
  • Versi CentOS: 5, 6
Vicary
sumber

Jawaban:

19

Saya mengikuti instruksi dari Instal Apache / PHP 5.4.10 pada Fedora 17/16, CentOS / RHEL 6.3 / 5.8 dengan sedikit modifikasi. Mungkin butuh 10 menit. Perintah persis saya ditampilkan di bawah ini. Perhatikan bahwa perintah pertama harus diubah dari apa yang ditampilkan dalam artikel. Perubahan itu dari epel-release-6-7.noarch.rpmke epel-release-6-8.noarch.rpm.

  1. Bagaimana cara menambahkan repo yang menyediakan PHP 5.4 ke dalam 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. Bisakah ini dengan mulus menggantikan versi PHP saat ini di CentOS? Bagi saya perintah berikut ini berfungsi dan tidak ada halaman web PHP saya yang ada rusak. Jarak tempuh Anda mungkin beragam.

    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. Bagaimana saya bisa beralih kembali ke repo resmi ketika mendukung PHP5.4? Saya belum menguji perintah untuk menghapus dan menginstal ulang PHP dari repositori CentOS, tetapi ini harus bekerja.

    # 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. Apakah akan ada potensi untuk merusak modul PHP yang saya gunakan saat ini? Iya nih. Menggunakan versi CentOS (6.2?) Terbaru dengan Zend diinstal menggunakan Zend installer, upgrade di atas mematahkan Zend.

Semua perintah di atas dijalankan sebagai root. Praktik terbaik adalah masuk sebagai pengguna non-istimewa dan digunakan sudo. (Ini adalah VM pengembangan dengan snapshot saat ini ...)

Juga, JANGAN aktifkan repositori Remi secara default - di masa lalu saya menjadi pintar dan mengaktifkannya secara default dan segala sesuatunya rusak, bahkan dengan prioritas repositori.

Jeff Benshetler
sumber
3
Hal-hal yang sering menjadi jelek dengan remi. Saya lebih suka menggunakan repositori iuscommunity untuk up-to-date php. Cara lain adalah dengan menggunakan repo server Zend, tetapi sepertinya sedikit berlebihan bagi saya.
Kazimieras Aliulis
1
@KazimierasAliulis Sayangnya repo IUS menginduksi dependensi neraka dengan menggunakan paket dan nama file yang tidak kompatibel. Saya tidak bisa merekomendasikan menggunakannya.
Michael Hampton
Deskripsi yang sangat teliti. Karena saya tidak memiliki kode yang terkait dengan mesin Zend, itu seharusnya tidak menjadi masalah dalam kasus saya, bukan?
Vicary
1
@MichaelHampton Saya menggunakan yum --enablerepo=remi updatedan menangani semua paket php terkait, sepertinya solusi yang lebih baik. Server berjalan tanpa masalah selama beberapa hari sekarang, terima kasih atas semua informasinya.
Vicary
1
Catatan: orang itu lupa menambahkan phpke daftar instal, yang menyebabkan saya banyak masalah karena apache tidak melayani file php, jadi jangan lupa untuk menambahkan ini ketika menggunakan
eric.itzhak
9

Peningkatan atas jawaban Webtatic lainnya:

1. Menggunakan panduan ini di http://www.webtatic.com/packages/php54/ :

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

2. Anda harus terlebih dahulu melihat paket terinstal apa yang perlu diganti, Anda dapat melakukan ini dengan menggunakan yum shell untuk menggabungkan menghapus php-common dan menginstal php54w-common dalam satu transaksi (jadi dependensi bersama tidak dihapus)

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

Jangan katakan "y" pada hasilnya, tetapi perhatikan semua paket yang disebutkan dalam "Menghapus untuk dependensi", misalnya

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

Jika ada paket lain selain php * dalam daftar ini maka Anda tidak dapat dengan mulus beralih ke Webtatic PHP 5.4, tetapi harus menyelidiki alternatifnya. Webtatic memiliki paket pengganti untuk semua paket php dasar (lihat paket yang terdaftar di halaman yang ditautkan dalam 1. untuk konfirmasi), jadi tidak boleh ada masalah, kecuali jika Anda menggunakan repositori pihak ke-3 lain yang memiliki paket yang diinstal tergantung pada versi php tertentu diinstal.

Untuk sisa instalasi (masih dalam yum shell), Anda cukup menghapus paket-paket ini dan menginstal mitra php54w- * mereka:

> 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

Maka Anda hanya akan melihat paket-paket yang telah Anda atur untuk dihapus dan diinstal dalam daftar, dan Anda dapat mengonfirmasi instalasi untuk beralih. Setiap layanan yang saat ini berjalan dengan php yang dimuat harus di-restart, misalnya httpd atau php-fpm.

Adapun ini menjadi 'mulus', perubahan perangkat lunak apa pun yang terjadi saat pengguna dapat mengakses situs web harus memiliki konsekuensi sepenuhnya dipahami. Pustaka bersama dihapus dan ditambahkan ketika suatu proses belum memuat mereka berpotensi memuat sementara pustaka bersama tidak ada. Lebih baik melakukan peningkatan perangkat lunak seperti ini secara offline, dan lebih baik diuji pada mesin non-produksi terlebih dahulu untuk memverifikasi proses bekerja seperti yang diharapkan.

3. Untuk beralih ke paket php54 berbasis CentOS hipotetis (CentOS 5 menggunakan awalan php53), Anda cukup menjalankan langkah-langkah di atas menggantikan penghapusan php dengan penghapusan php54w, dan instalasi php54w dengan instalasi php54 misalnya

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

Namun untuk peralihan ke basis hipotetis php54, kemungkinan tidak akan ada alternatif untuk beberapa paket (misalnya tidak ada ekstensi php53-pecl-memcache di CentOS 5) dan Webtatic memiliki paket yang tidak tersedia di basis CentOS (misalnya php54w -pecl-zendopcache). Jika hilang, maka Anda biasanya tidak memiliki pilihan lain selain menggunakan pecl secara langsung untuk menginstalnya.

4. Peningkatan PHP apa pun dapat menimbulkan bug, dan situs web harus diuji ulang. Ini tidak spesifik untuk Webtatic, tetapi gagasan umum bahwa fitur baru memperkenalkan bug baru.

Tidak seperti repositori Remi dalam jawaban yang diterima, repositori EL6 Webtatic tidak pernah menggunakan nama paket yang sama dengan repositori dasar CentOS, jadi tidak akan mengesampingkan pemasangan / peningkatan paket yang tidak ingin Anda ubah, dan karenanya diaktifkan secara default.

Penafian: Saya pemilik / pengelola Webtatic

Andy
sumber
Metode shell yum sangat bagus untuk mengamati ketergantungan, terima kasih.
Vicary
@Andy, tuliskan detail yang bagus, terima kasih. Bagaimana cara mengubah cli default (dan hanya cli) PHP menjadi 5.4 di CentOS 6?
Gaia
0

Anda dapat menemukan php 5.4.9 di sini untuk menginstal yum:

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

Anda dapat melakukan "rpm -qa | grep php" untuk melihat semua paket php Anda saat ini dan "rpm -e" untuk dihapus. saya tidak tahu modul Anda saat ini, tetapi layak untuk diuji sebelum peningkatan.

TheDayIsDone
sumber
Anda agak menjawab 1. Ketika datang ke pemeliharaan server, itu bukan hanya menginstal dan menjalankan tes, saya benar-benar bisa menggunakan lebih banyak info sebelum melakukan apa pun.
Vicary