Làm cách nào để nâng cấp lên phiên bản PHP mới nhất trong CentOS với yum?


22

Tôi tìm thấy một số bài đăng trên blog về điều này, nhưng nó khá thiếu các mô tả về các tác dụng phụ có thể xảy ra.

Tôi thực sự có thể sử dụng một số chi tiết về các bước sau:

  1. Cách thêm repo cung cấp PHP 5.4 vào yum
  2. Điều này có thể thay thế liền mạch phiên bản PHP hiện tại trong CentOS không?
  3. Làm cách nào tôi có thể chuyển trở lại repo chính thức khi nó hỗ trợ PHP 5.4? (5.3.3 hiện tại trong hệ thống của tôi)
  4. Liệu có khả năng phá vỡ các mô-đun PHP mà tôi hiện đang sử dụng không?

chú thích

Mọi người đã nâng cấp thành công với cùng một phương pháp trên các phiên bản mới hơn và đề nghị xóa các phiên bản cụ thể trong câu hỏi. Mặc dù rất tốt để xác định các phiên bản trong trường hợp các phiên bản mới hơn thực sự phá vỡ một cái gì đó, tôi muốn giữ phiên bản thành công mới nhất được cộng đồng gợi ý làm ghi chú.

Hãy cập nhật điều này nếu bạn đã nâng cấp thành công trên các phiên bản khác.

  • Phiên bản PHP: 5.4, 5.5, 5.6
  • Phiên bản CentOS: 5, 6

Câu trả lời:


19

Tôi đã làm theo hướng dẫn từ Cài đặt Apache / PHP 5.4.10 trên Fedora 17/16, CentOS / RHEL 6.3 / 5.8 với một sửa đổi nhỏ. Phải mất 10 phút. Các lệnh chính xác của tôi được hiển thị dưới đây. Lưu ý rằng lệnh đầu tiên phải được thay đổi so với những gì được hiển thị trong bài viết. Sự thay đổi là từ epel-release-6-7.noarch.rpmđến epel-release-6-8.noarch.rpm.

  1. Làm cách nào để thêm một repo cung cấp PHP 5.4 vào 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. Điều này có thể thay thế liền mạch phiên bản PHP hiện tại trong CentOS không? Đối với tôi các lệnh sau đã hoạt động và không có trang web PHP hiện tại nào của tôi bị hỏng. Số dặm của bạn có thể thay đổi.

    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. Làm cách nào tôi có thể chuyển trở lại repo chính thức khi nó hỗ trợ PHP5.4? Tôi chưa thử nghiệm các lệnh để loại bỏ và cài đặt lại PHP từ kho lưu trữ của CentOS, nhưng chúng sẽ hoạt động.

    # 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. Liệu có khả năng phá vỡ các mô-đun PHP mà tôi [sic] hiện đang sử dụng không? Vâng. Sử dụng phiên bản gần đây của CentOS (6.2?) Với Zend được cài đặt bằng trình cài đặt Zend, bản nâng cấp ở trên đã phá vỡ Zend.

Tất cả các lệnh trên đã được chạy như root. Thực hành tốt nhất là đăng nhập như một người dùng không có đặc quyền và sử dụng sudo. (Đây là một VM phát triển với ảnh chụp nhanh hiện tại ...)

Ngoài ra, KHÔNG bật kho lưu trữ Remi theo mặc định - trước đây tôi đã thông minh và bật nó theo mặc định và mọi thứ đã bị hỏng, ngay cả với ưu tiên kho lưu trữ.


3
Mọi thứ thường trở nên xấu xí với remi. Tôi thích sử dụng kho lưu trữ iuscommunity cho php cập nhật. Một cách khác là sử dụng repo máy chủ Zend, nhưng có vẻ như tôi hơi quá lời.
Kazimieras Aliulis

1
@KazimierasAliulis Thật không may, repo IUS gây ra địa ngục phụ thuộc bằng cách sử dụng tên tệp và gói không tương thích. Tôi không thể khuyên bạn nên sử dụng nó.
Michael Hampton

Mô tả rất kỹ lưỡng. Vì tôi không có mã liên quan đến công cụ Zend, nên nó không thành vấn đề trong trường hợp của tôi, phải không?
Vicary

1
@MichaelHampton Tôi sử dụng yum --enablerepo=remi updatevà nó chăm sóc tất cả các gói php liên quan, có vẻ như là một giải pháp tốt hơn. Máy chủ chạy không có vấn đề trong một số ngày nay, cảm ơn tất cả các thông tin.
Vicary

1
Lưu ý: anh chàng đã quên thêm phpvào danh sách cài đặt, điều này gây ra cho tôi rất nhiều vấn đề vì apache không phục vụ các tệp php, vì vậy đừng quên thêm nó khi sử dụng
eric.itzhak

9

Một cải tiến so với câu trả lời khác của Webtatic:

1. Sử dụng hướng dẫn trên http://www.webtatic.com/packages/php54/ :

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

2. Trước tiên bạn cần xem các gói đã cài đặt hiện tại cần thay thế, bạn có thể thực hiện việc này bằng cách sử dụng yum shell để kết hợp loại bỏ php-common và cài đặt php54w-common trong một giao dịch (vì vậy các phụ thuộc được chia sẻ không bị xóa)

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

Đừng nói "y" với kết quả, nhưng hãy lưu ý tất cả các gói được đề cập trong "Xóa cho phụ thuộc", ví dụ:

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

Nếu có các gói khác ngoài php * trong danh sách này thì bạn không thể chuyển đổi liền mạch sang Webtatic PHP 5.4, nhưng sẽ phải điều tra các lựa chọn thay thế. Webtatic có các gói thay thế cho tất cả các gói php cơ sở (xem các gói được liệt kê trên trang được liên kết đến 1. để xác nhận), do đó sẽ không có vấn đề gì, trừ khi bạn sử dụng các kho lưu trữ của bên thứ 3 khác có cài đặt các gói phụ thuộc vào phiên bản php cụ thể Cài đặt.

Đối với phần còn lại của quá trình cài đặt (vẫn trong vỏ yum), bạn chỉ cần xóa các gói này và cài đặt các đối tác php54w- * của chúng:

> 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

Sau đó, bạn chỉ nên xem các gói bạn đã đặt sẽ bị xóa và cài đặt trong danh sách và bạn có thể xác nhận cài đặt để chuyển qua. Bất kỳ dịch vụ nào hiện đang chạy với php được tải sẽ cần phải được khởi động lại, ví dụ httpd hoặc php-fpm.

Đối với điều này là 'liền mạch', bất kỳ thay đổi phần mềm nào xảy ra trong khi người dùng có thể truy cập trang web sẽ có những hậu quả được hiểu đầy đủ. Các thư viện dùng chung bị xóa và thêm vào khi một quá trình chưa được tải, chúng có khả năng tải trong khi thư viện dùng chung không có ở đó. Tốt hơn hết là thực hiện nâng cấp phần mềm như thế này ngoại tuyến và tốt nhất là thử nghiệm trên máy không sản xuất trước để xác minh quy trình hoạt động như mong đợi.

3. Để chuyển sang gói php54 cơ sở giả định (CentOS 5 đã sử dụng tiền tố php53), bạn chỉ cần chạy các bước trên thay thế loại bỏ php bằng loại bỏ php54w và cài đặt php54w với cài đặt php54, vd

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

Tuy nhiên, đối với việc chuyển sang cơ sở giả định php54, có thể sẽ không có lựa chọn thay thế nào cho một số gói (ví dụ: không có phần mở rộng php53-pecl-memcache trong CentOS 5) và Webtatic có các gói không có sẵn trong cơ sở CentOS (ví dụ: php54w -pecl-zendopcache). Nếu chúng bị thiếu, thì bạn thường không có lựa chọn nào khác ngoài sử dụng pecl trực tiếp để cài đặt chúng.

4 . Bất kỳ nâng cấp PHP nào cũng có thể giới thiệu các lỗi và các trang web nên được kiểm tra lại. Điều này không cụ thể đối với Webtatic, nhưng ý tưởng chung là các tính năng mới giới thiệu các lỗi mới.

Không giống như kho lưu trữ của Remi trong câu trả lời được chấp nhận, kho lưu trữ EL6 của Webtatic không bao giờ sử dụng cùng tên gói với kho cơ sở của CentOS, do đó sẽ không ghi đè cài đặt / nâng cấp các gói bạn không có ý định chuyển sang và như vậy được bật theo mặc định.

Tuyên bố miễn trừ trách nhiệm: Tôi là chủ sở hữu / người duy trì Webtatic


Phương pháp vỏ yum thực sự tốt cho việc quan sát phụ thuộc, cảm ơn.
Vicary

@Andy, chi tiết tuyệt vời viết lên, cảm ơn bạn. Làm cách nào để thay đổi cli mặc định (và chỉ cli) của PHP thành 5,4 trong CentOS 6?
Gaia

0

bạn có thể tìm thấy php 5.4.9 tại đây để cài đặt yum:

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

bạn có thể thực hiện "rpm -qa | grep php" để xem tất cả các gói php hiện tại của bạn và "rpm -e" để xóa. Tôi không biết các mô-đun hiện tại của bạn, nhưng nó đáng để thử nghiệm trước khi nâng cấp.


Bạn đã trả lời 1. Khi nói đến bảo trì máy chủ, không chỉ đơn giản là cài đặt nó và chạy thử nghiệm, tôi thực sự có thể sử dụng thêm thông tin trước khi làm bất cứ điều gì.
Vicary
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.