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 khiyumbáo lỗiCannot 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 = nginxrồisystemctl 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)
php -vhiện PHP 8.3.x ✓- website vẫn chạy bình thường (trang chủ, đăng nhập, thanh toán…)
- 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 PHP | PPA ondrej/php | Kho Remi |
| Cách cài | Cài song song với PHP cũ | Thay thế PHP cũ |
| Rollback | Đổi 1 dòng socket | Cài lại bản cũ |
| User PHP-FPM | www-data sẵn đúng, không chỉnh | Đổi apache → nginx |
| Cập nhật tự động | apt upgrade | yum update |
| Bản vá PHP | Luô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 |