Nâng cấp WordPress lên PHP 8.3 hoặc 8.4 an toàn
Cách nâng cấp PHP cho WordPress lên 8.3 hoặc 8.4 an toàn: kiểm tra tương thích, thử trên staging, đổi PHP-FPM, theo dõi log và quay lại khi cần.

Ý chính
- PHP 8.2 hết vá bảo mật ngày 31/12/2026, và WordPress khuyến nghị PHP 8.3 trở lên.
- WordPress core hỗ trợ PHP 8.3 từ bản 6.4 và PHP 8.4 từ bản 6.7, nên thứ hay hỏng là plugin và theme.
- Thứ tự an toàn: backup, cập nhật mọi thứ, thử trên staging với debug log, đổi site thật, theo dõi log.
- Với PHP-FPM, quay lại phiên bản cũ chỉ là trỏ website về socket cũ, mất vài giây.
Để nâng cấp PHP cho WordPress an toàn, trước hết bạn xem phiên bản hiện tại ở Công cụ → Tình trạng website → Thông tin → Máy chủ (Tools → Site Health → Info → Server), tạo backup đầy đủ và cập nhật WordPress core, plugin, theme. Sau đó chuyển một bản staging sang PHP 8.3 hoặc 8.4, bật debug log, thử các trang và luồng chính, rồi mới đổi site thật và theo dõi log lỗi vài ngày. Nếu có gì hỏng, chỉ cần đổi PHP về phiên bản cũ: với PHP-FPM đó là sửa một dòng, mất vài giây.
Bài này tập trung vào chính việc nâng cấp: chọn phiên bản nào, PHP 8.x hay làm hỏng gì, và cách đổi thủ công trên Ubuntu 24.04 hoặc trong ZoPanel. Nếu muốn hiểu cách chạy nhiều phiên bản PHP song song, xem bài chạy nhiều phiên bản PHP trên một server.
Vì sao nên nâng cấp PHP ngay bây giờ?
PHP 8.2 chỉ còn được vá bảo mật tới 31/12/2026, còn PHP 8.1 đã hết hỗ trợ từ 31/12/2025 (các phiên bản được hỗ trợ trên php.net, danh sách hết hỗ trợ). Sau mốc đó, lỗ hổng mới phát hiện trên các phiên bản này không còn được dự án PHP sửa.
WordPress khuyến nghị PHP 8.3 trở lên; các bản cũ hơn tới 7.4 vẫn chạy được nhưng "có thể khiến website gặp lỗ hổng bảo mật". WordPress 7.0 đã bỏ hỗ trợ PHP 7.2 và 7.3, nên hiện WordPress cần tối thiểu PHP 7.4 (sổ tay tương thích PHP của WordPress).
Mốc thời gian các phiên bản PHP và WordPress
Bảng dưới gộp ngày phát hành, ngày hết vá bảo mật của PHP với phiên bản WordPress đầu tiên hỗ trợ từng nhánh PHP, theo sổ tay WordPress core tại thời điểm viết (tháng 10/2026).
| PHP | Phát hành | Hỗ trợ tích cực tới | Vá bảo mật tới | WordPress hỗ trợ từ |
|---|---|---|---|---|
| 7.4 | 2019 | Đã hết | Hết hạn 28/11/2022 | Mức tối thiểu từ WordPress 7.0 |
| 8.0 | 2020 | Đã hết | Hết hạn 26/11/2023 | 5.6 |
| 8.1 | 2021 | Đã hết | Hết hạn 31/12/2025 | 5.9 |
| 8.2 | 08/12/2022 | 31/12/2024 | 31/12/2026 | 6.1 |
| 8.3 | 23/11/2023 | 31/12/2025 | 31/12/2027 | 6.4 |
| 8.4 | 21/11/2024 | 31/12/2026 | 31/12/2028 | 6.7 |
| 8.5 | 20/11/2025 | 31/12/2027 | 31/12/2029 | 6.9 |
Trước đây WordPress gắn nhãn "beta support" cho phiên bản PHP mới tới khi ít nhất 10% website dùng nó, vì WordPress "hiếm khi chạy một mình, không có theme hay plugin". Nhãn này đã bỏ từ tháng 5/2026, nhưng ý vẫn đúng: core hỗ trợ không có nghĩa plugin của bạn cũng chạy được.
Chọn 8.3 hay 8.4?
- PHP 8.4 là lựa chọn tốt hơn cho đa số website: được vá bảo mật tới cuối năm 2028.
- PHP 8.3 là bước an toàn nếu một plugin quan trọng chưa sẵn sàng cho 8.4. Ubuntu 24.04 có sẵn bản này trong kho chính thức (Launchpad), không cần thêm kho ngoài.
- PHP 8.5 chạy với WordPress 6.9 trở lên, nhưng plugin hỗ trợ còn ít hơn.
Nâng cấp PHP thì WordPress hay hỏng ở đâu?
Core hiếm khi là thủ phạm. Thường là plugin cũ, theme, page builder và code tự viết trong functions.php. Dưới đây là các thay đổi trong hướng dẫn chuyển đổi của chính PHP hay xuất hiện nhất trong log lỗi WordPress:
| Từ → lên | Thay đổi | Dấu hiệu |
|---|---|---|
| 7.4 → 8.0 | Bỏ create_function() và each(); gọi hàm có sẵn sai số tham số sẽ ném ArgumentCountError; 0 == "not-a-number" giờ là false (thay đổi PHP 8.0) |
Lỗi fatal, trang "critical error", so sánh cho kết quả lạ |
| 8.0 → 8.1 | Truyền null vào tham số không nullable của hàm có sẵn bị deprecated (PHP 8.1) |
Hàng loạt thông báo "Passing null to parameter" |
| 8.1 → 8.2 | Thuộc tính động (dynamic property) bị deprecated trừ khi class có #[\AllowDynamicProperties]; utf8_encode()/utf8_decode() và cú pháp "${var}" cũng vậy (PHP 8.2) |
Thông báo "Creation of dynamic property" |
| 8.3 → 8.4 | Tham số nullable ngầm định (function foo(T $a = null)) bị deprecated; hằng E_STRICT bị deprecated (PHP 8.4) |
Thông báo "Implicitly marking parameter $x as nullable is deprecated" |
| 8.3 → 8.4 | IMAP, OCI8, PDO_OCI và PSpell bị tách khỏi PHP, chuyển sang PECL (PHP 8.4) | Plugin dùng hàm imap_* lỗi nếu bạn không cài extension từ PECL |
Deprecated chỉ là cảnh báo: website vẫn chạy, nhưng chúng làm đầy log, che mất lỗi thật và cho thấy plugin nào ít được bảo trì. Thứ làm sập website là lỗi fatal, chủ yếu do hàm và extension đã bị bỏ.
Plugin PHP Compatibility Checker còn dùng được không?
Hướng dẫn cập nhật PHP của WordPress vẫn nhắc tới nó, nhưng trang plugin ghi rõ plugin không còn được bảo trì, chỉ kiểm tra tới PHP 8.0 và không phát hiện được lỗi lúc chạy. Với 8.3 hay 8.4, bản staging có bật debug log là cách kiểm tra đáng tin hơn.
Từng bước: thứ tự nâng cấp an toàn
1. Xem phiên bản đang chạy
Trong wp-admin, mở Công cụ → Tình trạng website → Thông tin → Máy chủ và ghi lại phiên bản PHP. Trên server, socket trong dòng fastcgi_pass của website cho biết điều tương tự; php -v chỉ cho biết phiên bản dòng lệnh mặc định.
2. Backup file và database
Giữ một bản backup đã thử khôi phục, lưu ngoài server. Đổi PHP về bản cũ sửa được phần code, nhưng nếu một plugin đã chuyển đổi dữ liệu dưới phiên bản mới thì có thể phải khôi phục database. Xem chiến lược backup website.
3. Cập nhật core, plugin, theme trước
Cập nhật khi còn ở PHP cũ và kiểm tra website vẫn chạy. Nhiều lỗi "do nâng PHP" thật ra là do plugin lỗi thời. Xoá plugin không dùng và thay plugin đã nhiều năm không cập nhật.
4. Tạo staging và bật debug log
Tạo bản staging (xem cách tạo website staging cho WordPress) và thêm vào wp-config.php của nó:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Lỗi sẽ được ghi vào wp-content/debug.log thay vì hiện ra màn hình (tài liệu debug của WordPress). Tài liệu khuyên không dùng các công cụ này trên site thật; nếu cần trên site thật, chỉ bật trong thời gian ngắn.
5. Đổi PHP trên staging và kiểm tra
Đổi phiên bản PHP của staging (các bước ở dưới) rồi bấm thử những thứ quan trọng: trang chủ, một bài viết, tìm kiếm, form liên hệ, đăng nhập, trình soạn thảo, và với cửa hàng thì giỏ hàng, thanh toán. Sau đó đọc debug.log, sửa hoặc thay thứ gây lỗi fatal.
6. Đổi site thật và theo dõi
Đổi site thật vào giờ ít khách, thử lại nhanh, và theo dõi log vài ngày: cron và các tuỳ chọn thanh toán hiếm dùng chỉ thỉnh thoảng mới chạy.
7. Chuẩn bị sẵn đường lui
Nếu site thật hỏng, đổi PHP về bản cũ trước rồi mới tìm nguyên nhân. Chỉ khôi phục backup khi dữ liệu đã bị thay đổi sai.
Nâng cấp thủ công trên Ubuntu 24.04 với nginx và PHP-FPM
Phần này giả định website chạy PHP-FPM sau nginx, như trong bài cài WordPress trên VPS. PHP 8.3 có sẵn trong kho của Ubuntu 24.04; muốn dùng 8.4, thêm PPA ondrej/php. Trang Launchpad của PPA ghi rằng Noble (24.04) và Jammy (22.04) vẫn dùng được, còn bản Ubuntu mới hơn nên dùng packages.sury.org. Đây là kho bên thứ ba, nghĩa là bạn tin người bảo trì kho với quyền root trên server.
Cài PHP 8.4 cùng các extension WordPress cần
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php8.4-fpm php8.4-mysql php8.4-curl php8.4-xml \
php8.4-mbstring php8.4-zip php8.4-intl php8.4-gd php8.4-imagick \
php8.4-opcache php8.4-redis
Sổ tay hosting của WordPress liệt kê json, hash, mysqli là bắt buộc, và curl, dom, exif, fileinfo, igbinary, imagick, intl, mbstring, openssl, xml, zip là rất nên có, cộng thêm một object cache như Redis. So sánh extension giữa bản cũ và bản mới để không thiếu gì:
diff <(php8.3 -m) <(php8.4 -m)
Mỗi phiên bản có php.ini riêng: chép các thiết lập như upload_max_filesize, memory_limit sang /etc/php/8.4/fpm/.
Tạo pool riêng cho website
Cho website một pool riêng trên phiên bản mới, chạy dưới user của website. Ví dụ /etc/php/8.4/fpm/pool.d/example.conf:
[example]
user = example
group = example
listen = /run/php/php8.4-example.sock
listen.owner = www-data
listen.group = www-data
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 30s
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /home/example/logs/php-error.log
sudo php-fpm8.4 -t && sudo systemctl restart php8.4-fpm
Trỏ nginx sang socket mới
Trong server block của website, chỉ đổi socket:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/run/php/php8.3-example.sock;
fastcgi_pass unix:/run/php/php8.4-example.sock;
}
sudo nginx -t && sudo systemctl reload nginx
Reload không cắt các kết nối đang mở. Theo dõi lỗi PHP bằng tail -f /home/example/logs/php-error.log (thư mục phải tồn tại và thuộc user của website) cùng wp-content/debug.log, còn log của pool nằm ở /var/log/php8.4-fpm.log.
Nếu cron chạy wp-cli, gọi đúng binary, ví dụ php8.4 /usr/local/bin/wp cron event run --due-now.
Quay lại phiên bản cũ
Giữ pool cũ chạy. Quay lại chỉ là làm ngược: trả dòng fastcgi_pass cũ, nginx -t, reload. Chỉ xoá pool cũ sau một hai tuần không có vấn đề.
Nâng cấp PHP cho WordPress trong ZoPanel
ZoPanel cho mỗi tài khoản hosting một pool PHP-FPM riêng cho từng phiên bản PHP, nên các bước trên chỉ còn vài cú nhấp, kể cả trên gói Free.
- Cài phiên bản. Quản trị viên thêm phiên bản PHP ở mục Runtimes. ZoPanel hỗ trợ PHP 7.4 tới 8.4.
- Cập nhật trước, an toàn. Trên tab WordPress của website, Update all chụp snapshot file và database, cập nhật, kiểm tra
/và/wp-login.php, rồi tự khôi phục nếu website hỏng. - Tạo staging. Create staging sao chép website sang
staging.<tên miền>. Kiểm tra tab PHP & config của bản staging đang cùng phiên bản với site thật. - Bật debug log. Trong thẻ Maintenance của bản staging, Debug logging bật
WP_DEBUGvàWP_DEBUG_LOGmà không hiện lỗi cho khách. - Đổi PHP trên staging, kiểm tra, rồi đổi site thật. Đổi phiên bản ở tab PHP & config; pool được cập nhật tự động, không phải sửa nginx. Không cần Publish to live: đổi phiên bản của site thật theo cùng cách, nên database site thật không bao giờ bị ghi đè.
- Quay lại bằng cách chọn phiên bản cũ trên cùng tab.
Các tuỳ chọn PHP riêng đặt ở Tools → PHP settings for this website được ghi vào .user.ini của website, nên vẫn giữ nguyên khi bạn đổi phiên bản. Chi tiết ở tài liệu WordPress Toolkit và website và PHP; xem thêm tính năng WordPress.
Nói thẳng: danh sách hỗ trợ của ZoPanel hiện dừng ở PHP 8.4. Nếu bạn cần PHP 8.5 ngay, hãy xem ghi chú phát hành mới nhất trước.
Kết luận
Nâng cấp PHP cho WordPress ít rủi ro nếu làm đúng thứ tự: backup, cập nhật mọi thứ, thử trên staging với debug log, đổi site thật, theo dõi log, và giữ sẵn phiên bản cũ để quay lại. Khi PHP 8.2 hết vá bảo mật vào cuối năm 2026, PHP 8.4 là đích hợp lý, còn 8.3 là bước đệm khi có plugin chậm chân.
Nếu muốn có staging, cập nhật an toàn và đổi PHP cho từng website ở cùng một chỗ, hãy thử ZoPanel: gói Free gồm 3 tài khoản hosting, 10 website và 10 database, không giới hạn thời gian. Xem bảng giá.
Câu hỏi thường gặp
Nâng cấp PHP có làm hỏng website WordPress không?
Core hỗ trợ PHP 8.3 từ bản 6.4 và 8.4 từ bản 6.7. Lỗi thường đến từ plugin, theme lỗi thời hoặc code tự viết, nên hãy thử trên staging và giữ sẵn phiên bản cũ.
Làm sao biết WordPress đang chạy PHP bản nào?
Trong wp-admin, mở Công cụ → Tình trạng website → Thông tin và mở mục Máy chủ. Trên server, xem socket PHP-FPM trong cấu hình nginx của website. php -v chỉ cho biết phiên bản dòng lệnh mặc định.
Có nên nhảy thẳng từ PHP 7.4 lên 8.4 không?
Được, nếu bạn thử kỹ trên staging. Hãy chuẩn bị sửa nhiều hơn so với nâng một bậc: PHP 8.0 đã bỏ các hàm như create_function() và each(), và các bản sau thêm nhiều deprecated.
Website báo "critical error" sau khi nâng cấp thì làm gì?
Đổi về phiên bản PHP trước, website sẽ chạy lại sau vài giây. Sau đó dùng wp-content/debug.log trên staging để tìm plugin hoặc theme gây lỗi, sửa rồi thử lại.
Thông báo deprecated có nghĩa là website bị lỗi không?
Không. Chúng cảnh báo code sẽ ngừng chạy ở một phiên bản PHP tương lai; website vẫn hoạt động. Hãy ghi log, không hiện ra màn hình, và báo tác giả plugin sửa.
Đọc tiếp

Cài Nginx, PHP, MariaDB trên Ubuntu 24.04 (LEMP) từng bước
Hướng dẫn cài nginx php mariadb trên Ubuntu 24.04 và Debian 12: tường lửa, PHP-FPM, server block, database, SSL Let's Encrypt và các lỗi bảo mật hay gặp.

Deploy Laravel lên VPS: queue, scheduler và cập nhật không gián đoạn
Cách deploy Laravel lên VPS Ubuntu 24.04: PHP-FPM, nginx, .env, queue worker, scheduler và release không downtime, làm tay hoặc với ZoPanel.

Tạo staging WordPress: thử thay đổi an toàn trước khi lên site thật
Hướng dẫn tạo staging WordPress trên VPS bằng panel hoặc thủ công với wp-cli, cách chặn index, đẩy lên site thật và những lỗi làm mất đơn hàng cần tránh.