Hướng dẫn chuyển đổi PHP version cũ sang PHP 8

Vì sao cần chuyển đổi? PHP 5.6 và 7.x đã ngừng phát hành bản vá bảo mật — website chạy trên bản cũ là mục tiêu dễ bị tấn công, chèn mã độc, chiếm quyền server, mất dữ liệu. Chuyển sang PHP 8.3 sẽ nhận đầy đủ bản vá an toàn và website chạy nhanh hơn ~10–20%.


Bước 0 — Kiểm tra

php -v                          # PHP nào? 7.x/5.x cần nâng, 8.3+ thì dừng

Bước 1 — Thêm kho phần mềm

Lệnh cho Ubuntu:

sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y && sudo apt update

Ubuntu 24.04 đã có sẵn PHP 8.3 — bỏ qua bước này.

Lệnh cho CentOS:

sed -i 's/^mirrorlist=/#mirrorlist=/' /etc/yum.repos.d/CentOS-*.repo
sed -i 's|#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=http://vault.centos.org/7.9.2009|g' /etc/yum.repos.d/CentOS-*.repo

yum install -y yum-utils epel-release
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php83

2 dòng sed đầu chỉ cần khi yum báo lỗi Cannot find a valid baseurl (repo CentOS 7 đã EOL, mirrorlist tắt từ 2024). Chạy trước cũng vô hại, nên chạy luôn cho chắc.

Bước 2 — Cài PHP 8.3

Lệnh cho Ubuntu:

sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-intl php8.3-opcache

php8.3 -v                       # kiểm tra cài OK

Lệnh cho CentOS:

yum --enablerepo=remi,remi-php83 install -y php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-gd php-mbstring php-xml php-bcmath php-intl php-zip

systemctl start php-fpm && systemctl enable php-fpm

Ubuntu: PHP 8.3 cài song song với PHP cũ — rollback an toàn. Module thêm: php8.3-pgsql, php8.3-redis, php8.3-imagick.

CentOS: PHP 8.3 thay thế PHP cũ — bắt buộc đã backup ở Bước 0. Dùng Nginx thì sửa /etc/php-fpm.d/www.conf: user = nginx, group = nginx rồi systemctl restart php-fpm.


Bước 3 — Trỏ website sang PHP 8.3

⚠️ Lưu ý quan trọng: Source code viết cho PHP cũ (code tự viết, plugin, theme, CMS) có thể chưa tương thích PHP 8 — website vừa nâng xong có thể gặp trang trắng, lỗi 500. Hiện tượng bình thường, không mất dữ liệu: quay về PHP cũ theo mục , nâng code/CMS rồi thử lại.

Lệnh cho Ubuntu (Nginx):

sudo nano /etc/nginx/sites-available/tenmiencuaban
# tìm dòng fastcgi_pass socket PHP cũ, đổi thành: unix:/run/php/php8.3-fpm.sock
sudo nginx -t && sudo systemctl reload nginx

Lệnh cho CentOS (Nginx):

nano /etc/nginx/conf.d/default.conf
# tìm dòng fastcgi_pass socket PHP cũ, đổi thành: unix:/run/php-fpm/www.sock
nginx -t && systemctl reload nginx

Ubuntu + Apache: sudo apt install -y libapache2-mod-php8.3 → sudo a2dismod php7.4 && sudo a2enmod php8.3 → sudo systemctl restart apache2 (thay 7.4 = bản cũ).

CentOS + Apache: yum install -y php-httpd → systemctl restart httpd.


Bước 4 — Kiểm tra & hoàn tất (dùng chung)

  1. php -v hiện PHP 8.3.x ✓
  2. website vẫn chạy bình thường (trang chủ, đăng nhập, thanh toán…)
  3. Xóa check.php — xong!

Ubuntu chạy định kỳ sudo apt update && sudo apt upgrade -y; CentOS chạy yum -y update — PHP tự nhận bản vá bảo mật.


Quay về PHP cũ (nếu website lỗi tương thích)

Lệnh cho Ubuntu (PHP cũ vẫn còn nguyên — đổi lại 1 dòng):

sudo nano /etc/nginx/sites-available/tenmiencuaban
# đổi socket về: unix:/run/php/php7.4-fpm.sock  (bản cũ)
sudo nginx -t && sudo systemctl reload nginx

Lệnh cho CentOS (cài lại bản cũ):

yum-config-manager --disable remi-php83
yum-config-manager --enable remi-php74        # thay = bản PHP cũ
yum -y remove php*
yum --enablerepo=remi-php74 install -y php-fpm php-common \
  php-opcache php-pdo php-mysqlnd php-gd php-mbstring php-xml php-intl
systemctl restart php-fpm

Lỗi 500 trang trắng = code/plugin cũ chưa hợp PHP 8 → nâng code/CMS rồi thử lại Bước 3. Backup ở Bước 0 đảm bảo dữ liệu an toàn tuyệt đối.


Khác nhau Ubuntu ↔ CentOS

Điểm🐧 Ubuntu🎩 CentOS
Kho PHPPPA ondrej/phpKho Remi
Cách càiCài song song với PHP cũThay thế PHP cũ
RollbackĐổi 1 dòng socketCài lại bản cũ
User PHP-FPMwww-data sẵn đúng, không chỉnhĐổi apache → nginx
Cập nhật tự độngapt upgradeyum update
Bản vá PHPLuôn mới nhất (8.3.x)Chốt ở 8.3.8 (06/2024) — kho Remi ngừng build cho EL7, không còn vá mới