Bagaimana cara menginstal PHP 5.3 di CentOS?

9

Saya harus menginstal PHP 5.3 di server CentOS saya. Jika saya melakukannya yum install php, repositori dasar menginstal 5.1.6 yang terlalu tua untuk aplikasi yang perlu saya instal. Jadi saya sudah mencoba menggunakan repositori IUS , mengikuti instruksi resmi dari IUS:

root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm

root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm

root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm

BAIK. Sekarang saya cukup lakukan yum install php53, dll untuk semua yang saya butuhkan ... tapi saya mendapatkan kesalahan ini:

Running rpm_check_debug
Running Transaction Test
Finished Transaction Test


Transaction Check Error:
  file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /usr/share/man/man1/php.1.gz from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /etc/php.ini from install of php53u-common-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-common-5.1.6-27.el5_5.3.x86_64

Error Summary
-------------

Saya tidak tahu bagaimana menyelesaikannya. Saya pikir saya harus menghapus paket-paket dasar. Namun, sebagai orang yang baru mengenal Linux, saya tidak tahu bagaimana melakukannya.

fivelitresofsoda
sumber

Jawaban:

8

Pembaruan : Rupanya RHEL 5.6 termasuk PHP 5.3 , jadi ini akan muncul secara native untuk CentOS segera.

file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/share/man/man1/php.1.gz from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /etc/php.ini from install of php53u-common-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-common-5.1.6-27.el5_5.3.x86_64

Masalahnya di sini adalah bahwa paket yang Anda instal memiliki nama yang berbeda (php53 bukan php), tetapi mereka mencoba untuk menginstal file yang sama ... karena itu konflik. Ini belum tentu cara terbaik untuk menyatukan paket, tetapi saya tidak tahu apakah ada paket yang lebih baik sehingga kami akan mengabaikannya.

Untuk menghapus paket yang diinstal saat ini:

# yum remove php-cli php-common php

Jadi, secara umum, yum remove <list of packages>akan menghapus paket. Dan tentu saja, yum list installeduntuk melihat daftar paket yang diinstal (atau rpm -qa).

larsks
sumber
hm ya menghapus mungkin lebih baik daripada menghapus, karena menghapus juga menghapus dependensi. Coba hapus terlebih dahulu, jika gagal coba hapus.
Phil Hollenback
2
removedan erasesinonim, menurut yumhalaman manual di bawah CentOS dan rilis Fedora baru-baru ini.
larsks
Terima kasih! Itu berhasil, meskipun saya tidak harus menghapus php tetapi dua yang pertama dalam daftar itu. Untuk menginstal php 5.3 saya hanya perlu menginstal yum php53 kan? Ada banyak paket yang terdaftar tetapi saya pikir itu satu-satunya yang penting bukan?
fivelitresofsoda
Sinonim pasti. Cari di yumcommands.pyjika Anda ragu. :)
mattdm
Mungkin. Hanya Anda yang akan tahu jika aplikasi Anda memerlukan modul tambahan apa pun (mis., Dukungan xml, dukungan ldap, database, dan sebagainya).
larsks
4

Jawabannya telah berubah, pada 13 Januari 2011. Red Hat telah merilis versi 5.6, dan ini termasuk versi PHP 5.3 sebagai paket terpisah ( php53).

Anda harus menghapus PHP lama dan kemudian menginstal PHP 5.3 secara terpisah. Ini terdengar mirip dengan paket Anda dari repositori IUS, tetapi sekarang sudah resmi.

Untuk informasi lebih lanjut, lihat catatan rilis Red Hat .

Perhatikan bahwa ini baru keluar dari Red Hat, dan akan ada sedikit keterlambatan sebelum ini tersedia di CentOS. Pembaruan RHEL 5.6 terlihat relatif kecil, jadi saya seharusnya tidak berharap itu terlalu lama.

mattdm
sumber
ya. dan 4 bulan kemudian. itu masih belum dalam repo centos. :(
Stann
Ya. :( lwn.net/Articles/435744
mattdm
Ini tersedia mulai April 2011. Wah. Lihat CentOS 5.6 Catatan Rilis
Stefan Lasiewski
2

Coba hapus versi lama paket sebelum menginstal yang baru:

yum menghapus php-cli php-comon

kemudian coba instal yum Anda.

Peringatan : lihat daftar perubahan yang ingin Anda buat sebelum melakukan, untuk memastikan Anda tidak menghapus paket penting lainnya.

Phil Hollenback
sumber
2

Anda benar, Anda harus menghapus dulu paket php default. Sebelum melangkah maju, perlu diingat bahwa paket lain mungkin memiliki dependensi khusus pada versi dasar. Kemungkinannya adalah, Anda akan baik-baik saja, tetapi hanya diperingatkan bahwa Anda mungkin perlu mengatasi masalah lain nanti.

Anda harus dapat melakukan ini dengan menerbitkan

yum erase php-common php-cli

Diikuti oleh Anda

yum install php53
Scott Pack
sumber
1
  1. Saya harus menghapus php-cli, php-commondan php-devbersama dengan beberapa dependensi tetapi tidak ada yang lain (MySQL, dll. Tidak tersentuh.)
  2. Saya menginstal paket yang sama dalam rasa PHP 5.3 dengan dependensi dan sekarang semuanya sudah berjalan dan berjalan. phpinfomenegaskan bahwa saya sedang menjalankan PHP Versi 5.3.3.
  3. Saya me-restart Apache dan situs, menjalankan Joomla, berfungsi dengan baik.
szlevi
sumber
0

Saya memiliki masalah yang sama di mana "pembaruan yum php" akan memberi saya kesalahan konflik.

Menjalankan "pembaruan yum" (perbarui semuanya) berhasil bagi saya. Cobalah.

Juga, sadarilah bahwa jika Anda menjalankan "yum erase php" atau "yum remove php", itu mungkin menghapus semua paket yang bergantung pada PHP ... yang mungkin akan menyertakan panel kontrol Plesk atau CPanel Anda jika Anda telah menginstalnya. Jika saya tidak salah, Anda harus menginstalnya kembali, yang bisa menyebalkan.

Jason Coleman
sumber
2
Ya, saya punya masalah itu. Untuk memutakhirkan PHP, yum ingin menghapus Drupal, yang sebenarnya bukan dependensi: ini membutuhkan PHP untuk berfungsi, tetapi tidak terlalu peduli versi PHP apa, karena itu adalah sumber PHP dan bukan program yang dikompilasi. Adakah cara untuk menghapus instalasi PHP5.2 dan membiarkannya meninggalkan Drupal?
bart
0

Saya baru saja menyelesaikan masalah ini setelah banyak penelitian, yaitu menginstal PHP 5.3.10 pada CentOS 5.3. Saya telah mencoba menggunakan beberapa repositori, termasuk repo Atomicorp , tetapi ini merusak plesk

Saya akhirnya menemukan langkah-langkah berikut ini berhasil, pikir saya bagikan.

MULAI

Unduh dan aktifkan repositori REMI dan EPEL

cd ~
wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

vi /etc/yum.repos.d/remi.repo

Ubah "diaktifkan = 0" menjadi "diaktifkan = 1" di bawah tajuk "[remi]"

Anda harus menghapus php-sqlite2 atau Anda akan mendapatkan kesalahan ketergantungan

yum remove php-sqlite2

Perbarui PHP ke versi terbaru 5.3.10 dalam hal ini

yum update php

Cadangkan php.ini dan aktifkan versi yang baru diinstal

mv /etc/php.ini /etc/php.ini.old
mv /etc/php.ini.rpmnew /etc/php.ini

Cadangkan my.cnf dan aktifkan versi yang baru diinstal

mv /etc/my.cnf /etc/my.cnf.old
mv /etc/my.cnf.rpmnew /etc/my.cnf

Pasang versi terbaru ekstensi ioncube

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar -xvf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube/* /usr/lib64/php/modules/

echo 'zend_extension=/usr/lib64/php/modules/ioncube_loader_lin_5.3.so' > /etc/php.d/ioncube-loader.ini

Anda mungkin juga perlu menginstal ekstensi php, dalam hal ini saya juga perlu menginstal ekstensi SOAP:

yum install php-soap

Mulai ulang layanan untuk membuat perubahan diterapkan

service mysqld restart
service httpd restart

DIBUAT

Bersulang; Menandai

ponchopilate
sumber