Cài đặt PHP 8.3 trên Fedora 37, 38, 39 - Install PHP 8.3 on Fedora 37, 38, 39

Bài viết này giải thích cách install PHP 8.3 trên Fedora 37, 38, 39. Nó sử dụng kho lưu trữ do Remi Collet duy trì, người đã duy trì các gói PHP trên những hệ thống này trong hơn một thập kỷ.

Quy trình này cài đặt PHP 8.3 như một bộ sưu tập phần mềm, và nhiều phiên bản PHP có thể tồn tại cùng một lúc trên cùng một hệ thống.

PHP 8.3 là bản cập nhật lớn cho PHP trong năm 2023, mang đến một số tính năng mới như hằng số lớp có kiểu, Exceptions chi tiết trong phần mở rộng DateTime, hàm mới json_validate, các thay đổi và cải tiến về chức năng, cũng như việc loại bỏ một số tính năng. Tương tự như các phiên bản chính trước đó, PHP 8.3 cũng mang đến nhiều sửa lỗi và cải tiến về hiệu suất.

Các bước install PHP 8.3 trên Fedora 37,38, 39

Yêu cầu đầu tiên

Các bước được liệt kê trong bài viết này nên hoạt động trên Fedora 37, 38, và 39.

Chú ý: Các hành động có thể gây hậu quả tiềm ẩn

Các hành động sau đây được thực hiện với quyền sudo và đòi hỏi mức quyền đó để tiếp tục. Các cảnh báo thông thường khi thực hiện bất kỳ thay đổi trên toàn hệ thống nào cũng áp dụng ở đây. Hãy chắc chắn sao lưu hệ thống và kiểm tra các bản sao lưu trước khi tiếp tục.

Khi nâng cấp, đừng quên di chuyển cấu hình sang phiên bản PHP mới.

Liệt kê và ghi chú về các gói PHP hiện tại

Khi nâng cấp một phiên bản PHP hiện tại, lệnh sau đây liệt kê tất cả các gói được cài đặt có từ "php" trong tên gói, và lưu nó vào tệp packages.txt cũng như hiển thị nó trên terminal.

Điều này sẽ hữu ích để cài đặt các gói PHP 8.3 tương ứng trong các bước tiếp theo.

sudo dnf list installed | grep php | tee packages.txt

Thêm kho lưu trữ của Remi

Phiên bản Fedora đầu tiên chứa PHP 8.3 theo mặc định sẽ là Fedora 40. Điều này có nghĩa là đối với Fedora 37 đến 39, PHP phải được biên dịch từ nguồn hoặc phải đến từ một kho lưu trữ bên ngoài. Bước này sẽ không cần thiết trên Fedora 40 và các phiên bản sau.

Trên RHEL và các phần mở rộng dựa trên Enterprise Linux 8 hoặc 9, không có gói PHP 8.3 trong kho lưu trữ mặc định của chúng cả.

Remi Collect duy trì một số kho lưu trữ cho Fedora, RHEL và Enterprise Linux (Alma, Rocky, CentOS, v.v. tương thích với EL), bao gồm PHP 8.3 và một số tiện ích mở rộng PECL. Bài viết này giải thích cách thêm kho lưu trữ phù hợp và sử dụng các gói có sẵn trên kho lưu trữ của Remi.

Các lệnh sau đây thêm kho lưu trữ vào danh sách kho lưu trữ phần mềm cho dnf. Nó không ghi đè lên bất kỳ gói PHP nào khác trên các phiên bản PHP khác nhau. Có thể có nhiều phiên bản PHP tồn tại cùng một lúc. 

Đối với Fedora 37, 38 và 39:

sudo dnf install https://rpms.remirepo.net/fedora/remi-release-$(cut -d ' ' -f 3 /etc/fedora-release).rpm
sudo dnf config-manager --set-enabled remi

Install gói PHP 8.3 mới

Với kho lưu trữ của Remi được thêm và kích hoạt, các gói PHP có thể được cài đặt bằng cách sử dụng dnf. Gói chính php83 cài đặt các tiện ích mở rộng PHP phổ biến cũng như PHP CLI. Các tiện ích mở rộng bổ sung (bao gồm cả các tiện ích mở rộng PECL) theo mẫu php83-php-XYZ trong đó XYZ là tên của tiện ích mở rộng đó.

sudo dnf install php83 php83-php-fpm
  • Gói php83 cài đặt một số gói PHP phổ biến cho các tiện ích mở rộng PHP phổ biến. Điều này cài đặt gói PHP CLI như một phụ thuộc (php83-php-cli).
  • php83-php-fpm cài đặt SAPI FPM của PHP cho tích hợp với máy chủ web. Xem "Tích Hợp Với Máy Chủ Web" để biết thêm thông tin.

Tiện ích mở rộng PHP bổ sung

Gói chính php83 cài đặt một số tiện ích mở rộng PHP như FPM, PDO, Opcache, XML và Sodium. Kho lưu trữ Remi chứa nhiều tiện ích mở rộng cốt lõi PHP và tiện ích mở rộng PECL có thể dễ dàng cài đặt bằng dnf.

Tiện ích mở rộng cốt lõi PHP sử dụng mẫu đặt tên php83-php-XYZ, trong khi tiện ích mở rộng PECL được đặt tên là php83-php-pecl-XYZ. Khi không có xung đột tên, các tiện ích mở rộng PECL cũng có sẵn với tiền tố php83-php.

Dưới đây là một số tiện ích mở rộng PHP cốt lõi và PECL cũng như tên gói của chúng để sử dụng với lệnh dnf install để cài đặt.

Tiện ích mở rộng Tên gói
Intl
php83-php-intl
BCMath
php83-php-bcmath
Xdebug
php83-php-pecl-xdebug
Redis
php83-php-pecl-redis
PCov
php83-php-pecl-pcov
Image Magick
php83-php-pecl-imagick
APCu
php83-php-pecl-apcu
sudo dnf install php83-php-pecl-xdebug

Lệnh sau đây thực hiện một tìm kiếm đơn giản trên dnf:

sudo dnf search php83-php | grep apcu # Look for "APCu" extension

Một số tiện ích mở rộng PECL có thể không khả dụng trên PHP 8.3 nếu tiện ích nguồn gốc không biên dịch trên PHP 8.3 do vấn đề tương thích.

Khi nâng cấp, hãy tham khảo tệp packages.txt được tạo trong bước #2 để cài đặt lại các gói PHP 8.3 của phiên bản cũ của PHP.

Tích hợp với máy chủ web

PHP là một ngôn ngữ lập trình web, vì vậy việc tích hợp PHP với máy chủ web là rất phổ biến. Tích hợp với PHP-FPM qua giao thức Fast CGI là phương pháp phổ biến nhất, trong khi cũng có thể tích hợp PHP với các SAPI và frameworks khác như Swoole.

Kích hoạt và bắt đầu dịch vụ PHP 8.3 FPM

Gói php8.3-php-fpm tạo các tệp đơn vị systemd cần thiết để chạy PHP 8.3 FPM như một dịch vụ hệ thống, nhưng nó không kích hoạt nó theo mặc định.

Để kích hoạt nó để chạy tự động khi khởi động máy chủ và ngay lập tức bắt đầu dịch vụ, chạy các lệnh sau:

sudo systemctl enable php83-php-fpm
sudo systemctl start php83-php-fpm

Máy chủ web Apache

Khi cài đặt gói php83-php-fpm, nếu máy chủ web Apache (apache2) có sẵn, sẽ có một tệp /etc/httpd/conf.d/php83-php.conf mới mà tự động kích hoạt hỗ trợ PHP.

Khi nâng cấp từ một phiên bản PHP hiện tại, hãy đảm bảo xóa các tệp phpXX-php.conf cũ từ thư mục /etc/httpd/conf.d.

Nginx, Caddy, Litespeed, và các máy chủ khác qua Fast CGI

Địa chỉ socket UNIX mặc định cho PHP 8.3-FPM từ kho lưu trữ Remi là /var/opt/remi/php83/run/php-fpm/www.sock

Đối với máy chủ web như Nginx, Caddy, Litespeed, v.v. tích hợp với PHP qua Fast CGI, hãy thay đổi/cấu hình đường dẫn socket UNIX này thành địa chỉ socket UNIX này. Ví dụ trên Nginx, điều này liên quan đến việc thay đổi chỉ thị fastcgi_pass:

fastcgi_pass unix:/var/opt/remi/php82/run/php-fpm/www.sock;
fastcgi_pass unix:/var/opt/remi/php83/run/php-fpm/www.sock;

Kiểm tra install PHP 8.3

Sau khi cài đặt tất cả các gói, đến thời điểm quyết định xem cài đặt mới có thành công hay không.

Chạy lệnh php83 -v trong terminal nên hiển thị một thông điệp tương tự như sau:

Cài PHP 8.3 Fedora 37, 38, 39 - Install PHP 8.3 Fedora 37, 38, 39

Danh sách các module có thể được liệt kê với lệnh php -m. Danh sách này sẽ bao gồm một số tiện ích mở rộng PHP tích hợp. 

Di chuyển cấu hình

Bước này chỉ áp dụng khi nâng cấp lên PHP 8.3 từ một phiên bản PHP cũ hơn.

Các tệp cấu hình cho cài đặt PHP 8.3 mới nằm trong thư mục /etc/opt/remi/php83. Cài đặt PHP hiện tại cũng nên nằm trong các thư mục /etc/opt/remi/ hoặc /etc/php.

Không nên sao chép các tệp INI PHP hiện tại vào /etc/opt/remi/php83. Mặc dù có thể hoạt động khi nâng cấp từ PHP 8.2 hoặc một phiên bản gần đây, nhưng khuyến khích sao chép thủ công các chỉ thị INI.

Khi sử dụng PHP-FPM, đảm bảo sao chép đúng số lượng tiến trình FPM và mô hình tiến trình (ví dụ, trong tệp /etc/opt/remi/php83/php-fpm.d/www.conf).

Các tệp tải cho các tiện ích mở rộng PHP nằm tại /etc/opt/remi/php83/php.d. Việc xóa một tệp sẽ tắt tiện ích mở rộng PHP tương ứng.

Sau khi thực hiện các thay đổi, khởi động lại PHP 8.3-FPM:

sudo systemctl restart php8.3-fpm

Gỡ bỏ các phiên bản PHP cũ

Bước này chỉ áp dụng khi nâng cấp lên PHP 8.3 từ một phiên bản PHP cũ hơn.

Để gỡ bỏ các phiên bản PHP cũ, chạy lệnh dnf remove với tiền tố phiên bản PHP. Ví dụ, lệnh sau đây sẽ gỡ bỏ các gói và cấu hình của PHP 8.2:

sudo dnf remove php82*

Chạy PHP 8.3 cùng lúc với các phiên bản khác

Bài viết này chủ động tránh việc ghi đè lên các gói PHP hiện tại bằng cách cài đặt các gói PHP 8.3 với tiền tố php83. Như vậy, bạn có thể cài đặt và chạy nhiều phiên bản PHP cùng một lúc.

Trên các hệ thống Linux, PHP-FPM chạy như một socket UNIX với mỗi phiên bản PHP sử dụng một địa chỉ socket khác nhau. Cũng có thể có nhiều quy trình PHP FPM, và máy chủ web có thể chọn lọc sử dụng các phiên bản PHP khác nhau cho các ngữ cảnh khác nhau (ví dụ, PHP 8.3 cho example.com, trong khi sử dụng PHP 8.2 cho example.net).

Những lệnh thực thi PHP CLI có sẵn toàn cầu với php83, điều này cũng khuyến khích chạy nhiều phiên bản PHP CLI cùng một lúc.

Thực thi php Global

Một số tập lệnh có thể yêu cầu PHP CLI phải có tên là php. Việc cài đặt gói php83-syspaths từ dnf tự động tạo một liên kết từ /usr/bin/php đến tệp thực thi PHP CLI thực tế, đáp ứng nhu cầu này.

Việc cài đặt gói php83-syspaths khi tồn tại một gói khác phpXY-syspaths sẽ dẫn đến lỗi cài đặt DNF do xung đột cố gắng chiếm quyền symlink /usr/bin/php. Xóa các gói syspaths khác trước khi cố gắng cài đặt php83-syspaths.

sudo dnf remove php82-syspaths
sudo dnf install php83-syspaths

Quá trình install PHP 8.3 trên Fedora 37, 38, và 39 đã được mô tả chi tiết qua các bước. Việc sử dụng các gói có tiền tố php83 giúp đảm bảo rằng chúng ta có thể cài đặt và chạy đồng thời nhiều phiên bản PHP trên cùng một hệ thống mà không làm thay đổi cài đặt PHP hiện tại. Bạn có thể tiếp tục thực hiện install php 8.3 trên các phiên bản Fedora này theo hướng dẫn, tận dụng những tính năng mới và cải tiến mà PHP 8.3 mang lại.

Các gói dịch vụ Cloud VPS của KDATA mang đến cho bạn nhiều lựa chọn về hiệu suất cũng như khả năng lưu trữ, mọi nhu cầu về doanh nghiệp đều được đáp ứng. KDATA đảm bảo khả năng uptime lên đến 99,99%, toàn quyền quản trị và free backup hằng ngày. Tham khảo ngay các gói dịch vụ Cloud VPS:

https://kdata.vn/cloud-vps

👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất