ฉันจะอัปเกรดเป็น PHP เวอร์ชันล่าสุดใน CentOS ด้วย yum ได้อย่างไร


22

ฉันพบบางบล็อกโพสต์เกี่ยวกับเรื่องนี้ แต่มันค่อนข้างขาดคำอธิบายเกี่ยวกับผลข้างเคียงที่เป็นไปได้

ฉันสามารถใช้รายละเอียดบางอย่างเกี่ยวกับขั้นตอนเหล่านี้:

  1. วิธีเพิ่ม repo ที่ให้ PHP 5.4 ลงใน yum
  2. สามารถแทนที่รุ่น PHP ปัจจุบันใน CentOS ได้อย่างราบรื่นหรือไม่?
  3. ฉันจะเปลี่ยนกลับไปเป็น repo อย่างเป็นทางการได้เมื่อมันรองรับ PHP 5.4 ได้อย่างไร? (ปัจจุบัน 5.3.3 ในระบบของฉัน)
  4. มีโอกาสที่จะทำลายโมดูล PHP ที่ฉันใช้อยู่หรือไม่

บันทึก

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

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

  • รุ่น PHP: 5.4, 5.5, 5.6
  • รุ่น CentOS: 5, 6

คำตอบ:


19

ฉันทำตามคำแนะนำจากInstall Apache / PHP 5.4.10 บน Fedora 17/16, CentOS / RHEL 6.3 / 5.8พร้อมการปรับเปลี่ยนเล็กน้อย อาจใช้เวลา 10 นาที คำสั่งที่แน่นอนของฉันแสดงอยู่ด้านล่าง โปรดทราบว่าจะต้องเปลี่ยนคำสั่งแรกจากสิ่งที่แสดงในบทความ การเปลี่ยนแปลงที่เกิดจากการepel-release-6-7.noarch.rpmepel-release-6-8.noarch.rpm

  1. วิธีเพิ่ม repo ที่ให้ PHP 5.4 เป็น 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. สามารถแทนที่เวอร์ชัน PHP ปัจจุบันใน CentOS ได้อย่างราบรื่นหรือไม่ สำหรับฉันคำสั่งต่อไปนี้ใช้งานได้และไม่มีหน้าเว็บ PHP ที่ฉันมีอยู่พัง ไมล์สะสมของคุณอาจแตกต่างกันไป

    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. ฉันจะเปลี่ยนกลับไปเป็น repo อย่างเป็นทางการเมื่อมันรองรับ PHP5.4 ได้อย่างไร? ฉันยังไม่ได้ทดสอบคำสั่งเพื่อลบและติดตั้ง PHP จากคลังเก็บ CentOS อีกครั้ง แต่สิ่งเหล่านี้น่าจะใช้ได้

    # 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. มีความเป็นไปได้ไหมที่จะทำลายโมดูล PHP ที่ฉันใช้อยู่ในปัจจุบัน? ใช่. การใช้ CentOS รุ่นล่าสุด (6.2?) กับ Zend ที่ติดตั้งโดยใช้ Zend installer การอัพเกรดข้างต้นทำให้ Zend เสียหาย

rootทุกคำสั่งดังกล่าวถูกใช้เป็น sudoวิธีที่ดีที่สุดคือการเข้าสู่ระบบเป็นผู้ใช้ที่ไม่ได้รับการยกเว้นและการใช้งาน (นี่คือการพัฒนา VM พร้อมสแน็ปช็อตปัจจุบัน ... )

นอกจากนี้อย่าเปิดใช้งานที่เก็บ Remi เป็นค่าเริ่มต้น - ในอดีตที่ฉันฉลาดและเปิดใช้งานโดยค่าเริ่มต้นและสิ่งที่ยากจนแม้กับพื้นที่เก็บข้อมูลสำคัญ


3
สิ่งที่มักจะได้รับน่าเกลียดกับ Remi ฉันชอบที่จะใช้ที่เก็บ iuscommunity สำหรับ php ที่ทันสมัย อีกวิธีหนึ่งคือการใช้ repo เซิร์ฟเวอร์ Zend แต่ดูเหมือนว่าค่าใช้จ่ายเล็กน้อยสำหรับฉัน
Kazimieras Aliulis

1
@KazimierasAliulis น่าเสียดายที่ IUS repo ก่อให้เกิดการพึ่งพานรกโดยใช้แพ็คเกจและชื่อไฟล์ที่เข้ากันไม่ได้ ฉันไม่สามารถแนะนำให้ใช้
Michael Hampton

คำอธิบายอย่างละเอียดมาก เนื่องจากฉันไม่มีรหัสที่เกี่ยวข้องกับเอนจิ้น Zend มันไม่สำคัญเลยในกรณีของฉันใช่ไหม?
Vicary

1
@MichaelHampton ฉันใช้yum --enablerepo=remi updateและดูแล php แพ็คเกจที่เกี่ยวข้องทั้งหมดดูเหมือนว่าจะเป็นทางออกที่ดีกว่า เซิร์ฟเวอร์ทำงานโดยไม่มีปัญหาเป็นเวลาหลายวันแล้วขอบคุณสำหรับข้อมูลทั้งหมด
Vicary

1
หมายเหตุ: คนที่แต่งตัวประหลาดลืมที่จะเพิ่มลงphpในรายการติดตั้งซึ่งทำให้ฉันมีปัญหามากเพราะ apache ไม่ได้เป็นไฟล์ servce php ดังนั้นอย่าลืมเพิ่มเมื่อใช้
eric.itzhak

9

การปรับปรุงคำตอบ Webtatic อื่น ๆ :

1. การใช้คำแนะนำในhttp://www.webtatic.com/packages/php54/ :

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

2. คุณต้องดูว่าจำเป็นต้องเปลี่ยนแพคเกจการติดตั้งที่มีอยู่เดิมคุณสามารถทำสิ่งนี้ได้โดยใช้ yum shell เพื่อรวมการลบ php-common และ php54w-common ออกในการทำธุรกรรมเดียว

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

อย่าพูดคำว่า "y" กับผลลัพธ์ แต่พึงระลึกไว้เสมอว่าแพคเกจทั้งหมดที่ระบุไว้ใน "การลบเพื่อการอ้างอิง" เช่น

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

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

สำหรับส่วนที่เหลือของการติดตั้ง (ยังอยู่ใน yum shell) คุณเพียงแค่ลบแพ็คเกจเหล่านี้และติดตั้ง php54w- * counterparts ของพวกเขา:

> 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

คุณควรเห็นเฉพาะแพ็คเกจที่คุณตั้งค่าที่จะลบและติดตั้งในรายการและคุณสามารถยืนยันการติดตั้งเพื่อสลับ บริการใด ๆ ที่กำลังรันด้วยการโหลด php จะต้องเริ่มต้นใหม่เช่น httpd หรือ php-fpm

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

3. หากต้องการเปลี่ยนเป็นแพ็คเกจ php54 พื้นฐานของ CentOS (CentOS 5 ใช้คำนำหน้า php53) คุณเพียงแค่เรียกใช้ขั้นตอนข้างต้นแทนการลบ php ด้วยการลบ php54w และการติดตั้ง php54w ด้วยการติดตั้ง php54 เช่น

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

อย่างไรก็ตามสำหรับการสลับไปยังฐาน php54 สมมุติว่าจะไม่มีทางเลือกสำหรับบางแพ็คเกจ (เช่นไม่มีส่วนขยาย php53-pecl-memcache ใน CentOS 5) และ Webtatic มีแพ็คเกจที่ไม่สามารถใช้ได้ใน CentOS ฐาน (เช่น php54w -pecl-zendopcache) หากพวกเขาหายไปคุณมักจะไม่มีตัวเลือกอื่นนอกจากใช้ pecl โดยตรงเพื่อติดตั้ง

4. การอัพเกรด PHP ใด ๆ อาจมีข้อบกพร่องและควรทำการทดสอบเว็บไซต์ใหม่อีกครั้ง นี่ไม่ใช่เฉพาะ Webtatic แต่ความคิดทั่วไปที่คุณสมบัติใหม่แนะนำข้อบกพร่องใหม่

ต่างจากที่เก็บ Remi ในคำตอบที่ยอมรับ Webtatic EL6 repository จะไม่ใช้ชื่อแพคเกจเดียวกันกับที่เก็บพื้นฐานของ CentOS ดังนั้นจะไม่แทนที่การติดตั้ง / อัพเกรดแพ็คเกจที่คุณไม่ต้องการเปลี่ยนและเปิดใช้งานตามค่าเริ่มต้น

ข้อจำกัดความรับผิดชอบ: ฉันเป็นเจ้าของ / ผู้ดูแล Webtatic


วิธี yum shell นั้นดีมากสำหรับการสังเกตการพึ่งพาขอบคุณ
Vicary

@ แอนดี้เขียนรายละเอียดที่ดีมากขอบคุณ ฉันจะเปลี่ยน cli เริ่มต้น (และเฉพาะ cli) ของ PHP เป็น 5.4 ใน CentOS 6 ได้อย่างไร
Gaia

0

คุณสามารถค้นหา php 5.4.9 ที่นี่เพื่อติดตั้งยำ:

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

คุณสามารถทำ "rpm -qa | grep php" เพื่อดูแพ็คเกจ php ปัจจุบันของคุณและ "rpm -e" เพื่อลบ ฉันไม่รู้จักโมดูลปัจจุบันของคุณ แต่เป็นการทดสอบที่คุ้มค่าก่อนการอัพเกรด


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