ฉันจะติดตั้ง PHP 5.3 บน CentOS ได้อย่างไร


9

ฉันต้องติดตั้ง PHP 5.3 บนเซิร์ฟเวอร์ CentOS ของฉัน ถ้าฉันทำyum install phpที่เก็บฐานติดตั้ง 5.1.6 ซึ่งเก่าเกินไปสำหรับแอปพลิเคชันที่ฉันต้องการติดตั้ง ดังนั้นฉันจึงพยายามใช้ที่เก็บIUSทำตามคำแนะนำอย่างเป็นทางการจาก 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

ตกลง. ตอนนี้ฉันก็ทำได้yum install php53ฯลฯ สำหรับทุกสิ่งที่ฉันต้องการ ... แต่ฉันได้รับข้อผิดพลาดนี้:

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
-------------

ฉันไม่รู้ว่าจะแก้ไขอย่างไร ฉันคิดว่าฉันต้องลบแพ็คเกจพื้นฐาน อย่างไรก็ตามในฐานะที่เป็นคนใหม่ของ Linux ฉันไม่รู้ว่าจะทำอย่างไร

คำตอบ:


8

อัปเดต : เห็นได้ชัดว่า RHEL 5.6 รวมถึง PHP 5.3ดังนั้นสิ่งนี้จะแสดงขึ้นสำหรับ CentOS ในไม่ช้า

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

ปัญหาที่นี่คือแพคเกจที่คุณติดตั้งมีชื่อแตกต่างกัน (php53 แทนที่จะเป็น php) แต่พวกเขาพยายามที่จะติดตั้งไฟล์เดียวกัน ... ดังนั้นความขัดแย้ง นี่ไม่ใช่วิธีที่ดีที่สุดในการรวมแพ็คเกจ แต่ฉันไม่รู้ว่ามีแพ็คเกจที่ดีกว่าหรือเปล่าดังนั้นเราจะไม่สนใจมัน

ในการลบแพ็คเกจที่ติดตั้งอยู่ในปัจจุบัน:

# yum remove php-cli php-common php

ดังนั้นโดยทั่วไปyum remove <list of packages>จะลบแพ็กเกจ และแน่นอนyum list installedเพื่อดูรายการแพคเกจที่ติดตั้ง (หรือrpm -qa)


hm yeah remove อาจดีกว่าการลบเนื่องจากการลบยังลบการพึ่งพา ลองลบก่อนหากล้มเหลวลองลบ
Phil Hollenback

2
removeและeraseเป็นคำพ้องความหมายตามyumหน้า man ภายใต้ CentOS และ Fedora รุ่นล่าสุด
larsks

ขอบคุณ! ใช้งานได้แม้ว่าฉันไม่ต้องลบ php แต่สองรายการแรกในรายการนั้น หากต้องการติดตั้ง php 5.3 ฉันเพียงแค่ต้องติดตั้ง phum 53 ใช่ไหม? มีแพ็คเกจมากมายที่ระบุไว้ แต่ฉันคิดว่านั่นเป็นแพคเกจเดียวที่สำคัญใช่มั้ย
fivelitresofsoda

คำพ้องความหมายแน่นอน ดูyumcommands.pyถ้าคุณสงสัย :)
mattdm

อาจ. มีเพียงคุณเท่านั้นที่ทราบว่าแอปพลิเคชันของคุณต้องการโมดูลเพิ่มเติมใด ๆ (เช่นการสนับสนุน xml, การสนับสนุน ldap, ฐานข้อมูลและอื่น ๆ )
larsks

4

คำตอบนี้เปลี่ยนไปเมื่อวันที่ 13 มกราคม 2011 Red Hat ได้เปิดตัวรุ่น 5.6 และรวมถึง PHP เวอร์ชัน 5.3 เป็นแพ็คเกจแยกต่างหาก ( php53)

คุณต้องลบ PHP เก่าออกแล้วติดตั้ง PHP 5.3 แยกต่างหาก ฟังดูเหมือนกับแพ็คเกจของคุณจากที่เก็บ IUS แต่ตอนนี้มันเป็นทางการแล้ว

สำหรับข้อมูลเพิ่มเติมโปรดดูที่บันทึกรุ่น Red Hat

โปรดทราบว่านี่เพิ่งออกจาก Red Hat และจะมีความล่าช้าเล็กน้อยก่อนที่ CentOS จะพร้อมใช้งาน แม้ว่าการอัปเดต RHEL 5.6 จะดูค่อนข้างน้อยดังนั้นฉันไม่ควรคาดหวังว่ามันจะยาวเกินไป


อ๋อ และ 4 เดือนต่อมา มันยังไม่ได้อยู่ใน centos repos :(
Stann


วางตลาดตั้งแต่เดือนเมษายน 2554 ดูบันทึกประจำรุ่นของ CentOS 5.6
Stefan Lasiewski

2

ลองลบแพ็กเกจเวอร์ชันเก่าก่อนติดตั้งแพ็กเกจใหม่:

ยำลบ php-cli php-comon

จากนั้นลองติดตั้งยำของคุณ

คำเตือน : ดูรายการการเปลี่ยนแปลงที่ yum ต้องการทำก่อนทำรายการเพื่อให้แน่ใจว่าคุณไม่ได้ลบแพ็คเกจสำคัญอื่น ๆ


2

คุณถูกต้องคุณจะต้องถอนการติดตั้งแพ็คเกจ php เริ่มต้นก่อน ก่อนดำเนินการต่อโปรดทราบว่าแพคเกจอื่น ๆ อาจมีการอ้างอิงเฉพาะในเวอร์ชันพื้นฐาน โอกาสที่คุณจะดี แต่เพิ่งถูกเตือนว่าคุณอาจจำเป็นต้องแก้ไขข้อกังวลอื่น ๆ ในภายหลัง

คุณควรจะสามารถทำได้โดยการออก

yum erase php-common php-cli

ตามด้วยของคุณ

yum install php53


1
  1. ผมต้องลบphp-cli, php-commonและphp-devพร้อมกับบางพึ่งพา แต่ไม่มีอะไรอื่น (MySQL, ฯลฯ เป็นแตะต้อง.)
  2. ฉันติดตั้งแพ็คเกจเดียวกันใน PHP 5.3 ซึ่งมีการพึ่งพาและตอนนี้ทุกอย่างก็พร้อมใช้งาน phpinfoยืนยันว่าฉันใช้งาน PHP เวอร์ชัน 5.3.3
  3. ฉันรีสตาร์ท Apache และไซต์โดยใช้ Joomla ทำงานได้ดี

0

ฉันมีปัญหาเดียวกันกับที่ "yum update php" จะทำให้ฉันมีข้อผิดพลาดความขัดแย้ง

การเรียกใช้ "yum update" (อัปเดตทุกอย่าง) ได้ผลสำหรับฉัน ลองดูสิ

นอกจากนี้โปรดทราบว่าหากคุณเรียกใช้ "yum erase php" หรือ "yum remove php" ก็อาจลบแพ็คเกจทั้งหมดที่ขึ้นอยู่กับ PHP ... ซึ่งอาจรวมถึงแผงควบคุม Plesk หรือ CPanel ของคุณหากคุณติดตั้งแล้ว หากฉันไม่เข้าใจผิดคุณจะต้องติดตั้งใหม่ซึ่งอาจเป็นความเจ็บปวด


2
ใช่ฉันมีปัญหาตรงนั้น ในการอัพเกรด PHP นั้น yum ต้องการลบ Drupal ซึ่งไม่ใช่การพึ่งพาจริง ๆ : มันต้องใช้ PHP เพื่อทำงาน แต่ก็ไม่สนใจ PHP เวอร์ชันใดเลยเพราะมันเป็นแหล่ง PHP และไม่ใช่โปรแกรมที่คอมไพล์ วิธีถอนการติดตั้ง PHP5.2 และปล่อยให้ Drupal อยู่คนเดียวหรือไม่?
บาร์ต

0

ฉันเพิ่งแก้ไขปัญหานี้หลังจากการวิจัยมากมายคือการติดตั้ง PHP 5.3.10 บน CentOS 5.3 ฉันได้ลองใช้ที่เก็บหลายแห่งรวมถึงAtomicorp repoด้วย

ในที่สุดฉันก็พบว่าขั้นตอนต่อไปนี้ใช้การรักษาได้ฉันคิดว่าฉันแบ่งปัน

เริ่ม

ดาวน์โหลดและเปิดใช้ที่เก็บ REMI และ 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

เปลี่ยน "enabled = 0" เป็น "enabled = 1" ภายใต้หัวข้อ "[remi]"

คุณต้องลบ php-sqlite2 มิฉะนั้นคุณจะได้รับข้อผิดพลาดในการพึ่งพา

yum remove php-sqlite2

อัปเดต PHP เป็นเวอร์ชั่นล่าสุด 5.3.10 ในกรณีนี้

yum update php

สำรอง php.ini และเปิดใช้งานเวอร์ชันที่ติดตั้งใหม่

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

สำรอง my.cnf และเปิดใช้งานเวอร์ชันที่ติดตั้งใหม่

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

ติดตั้งส่วนขยาย 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

คุณอาจต้องติดตั้งส่วนขยาย php ในกรณีนี้ฉันต้องติดตั้งส่วนขยาย SOAP ด้วย:

yum install php-soap

เริ่มบริการใหม่เพื่อให้การเปลี่ยนแปลงมีผล

service mysqld restart
service httpd restart

DONE

ไชโย; เครื่องหมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.