Cách cập nhật trang web WordPress của bạn lên PHP 8

Tác giả Security+, T.Năm 09, 2024, 01:02:08 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Gần đây chúng tôi đã hoàn thành việc nâng cấp tất cả các trang web khách hàng của mình lên PHP 8. Đây là một nhiệm vụ quan trọng. Việc có phiên bản PHP mới nhất và ổn định giúp giữ cho trang web khách hàng của chúng tôi an toàn, bảo mật và hoạt động hiệu quả.


Việc chuyển từ PHP 7.4 sang PHP 8.0 là một trong những quá trình phức tạp nhất cho đến nay do những thay đổi đột phá được đưa vào PHP 8.0.

Bất kỳ plugin hoặc chủ đề nào chứa mã không tương thích sẽ khiến trang WordPress bị hỏng.

Trong một số trường hợp, bạn có thể thấy lỗi như thế này ở giao diện người dùng của trang web:


Trong các trường hợp khác, vấn đề sẽ không rõ ràng cho đến khi bạn kiểm tra trang web sâu hơn.

1. Tại sao phải cập nhật lên phiên bản PHP 8?

Có ba lý do chính đáng để luôn sử dụng phiên bản PHP mới nhất và ổn định nhất:

  • Bảo mật. Các phiên bản PHP cũ đã hết tuổi thọ sẽ không còn được hỗ trợ. Các vấn đề bảo mật sẽ không được vá. Bất kỳ trang web nào vẫn sử dụng phiên bản cũ sẽ dễ bị tấn công.
  • Tốc độ. Mỗi phiên bản PHP mới đều có những cải tiến về tốc độ. Kể từ PHP 5.6 đã có những cải tiến liên tục và PHP 8 cũng không ngoại lệ. Bạn sẽ nhận thấy tốc độ tăng lên nhiều nhất trong phần phụ trợ WordPress của mình. Nếu bạn đã bật bộ nhớ đệm trên trang web của mình thì sự khác biệt sẽ ít rõ ràng hơn.
  • Hỗ trơ. PHP 7.4 sẽ ngừng được hỗ trợ từ tháng 11 năm 2022. Các máy chủ web tốt thường sẽ buộc bạn phải sử dụng PHP 8.0 vì họ phải đảm bảo an toàn cho hệ thống của chính họ. Nếu bạn đang sử dụng dịch vụ lưu trữ chia sẻ, họ cũng sẽ muốn giữ an toàn cho những khách hàng khác của họ trên cùng một máy chủ.

2. Hiện tại bạn đang có phiên bản PHP nào?

Một cách nhanh chóng để biết bạn đang chạy phiên bản PHP nào là truy cập vào màn hình quản trị WordPress của bạn.

Đây là nơi để tìm thấy nó:

  • Mở bảng điều khiển quản trị viên WordPress
  • Đi tới Công cụ→Tình trạng trang web
  • Nhấp vào tab Thông tin ở trên cùng
  • Mở rộng danh sách thả xuống Máy chủ
  • Bạn sẽ thấy phiên bản PHP ở cuối trang


3. Cách kiểm tra trang WordPress của bạn có tương thích với PHP 8 không

Bây giờ bạn đã biết mình đang chạy phiên bản PHP nào, làm sao bạn biết nó sẽ an toàn để nâng cấp?

Đây là cách để tìm hiểu:

  • Tạo một trang web dàn dựng. Cách tốt nhất để kiểm tra trang WordPress của bạn có tương thích hoàn toàn với PHP 8 hay không là tạo một trang dàn dựng và sau đó nâng cấp trang đó trước.
  • Chạy PHP ở chế độ xem trước, cho phép bạn kiểm tra trang web của mình bằng một phiên bản PHP khác. Tất cả những người dùng khác sẽ tiếp tục xem trang web như bình thường. Điều này mang đến cho bạn cơ hội giải quyết vấn đề trước khi thực hiện chuyển đổi thực sự.
  • Chạy trình kiểm tra tính tương thích. Chạy trang web của bạn thông qua trình kiểm tra khả năng tương thích PHP. Hãy nhớ rằng kết quả dương tính giả có thể xảy ra do các nhà phát triển plugin đã thêm mã PHP cũ để có khả năng tương thích ngược.

4. Cách nâng cấp trang web WordPress của bạn lên PHP 8

Trong nhiều trường hợp, việc nâng cấp lên PHP 8 sẽ rất đơn giản.

Nếu bạn đã giữ plugin ở mức tối thiểu và chỉ có các plugin hiện tại và được hỗ trợ tốt trên trang web của mình thì rất có thể bạn chỉ cần nhấp vào nút nâng cấp và tất cả sẽ ổn.

Để đảm bảo quá trình di chuyển của bạn được an toàn và không dẫn đến thời gian ngừng hoạt động, dưới đây là các bước chúng tôi khuyên dùng:

Bước 1 – Sao lưu trang WordPress của bạn

Trước khi bạn làm bất cứ điều gì trên trang WordPress của mình, hãy luôn chạy bản sao lưu. Tùy thuộc vào nơi bạn lưu trữ trang web của mình, bạn có thể thực hiện việc này một cách dễ dàng trong bảng điều khiển máy chủ.

Một tùy chọn khác là sử dụng plugin WordPress như Updraft Plus hoặc BackupBuddy.

Bước 2 – Cập nhật

Trước khi nâng cấp, hãy đảm bảo bạn có phiên bản mới nhất của tất cả các plugin. chủ đề và WordPress core.

Đây là một bài viết rất hữu ích về cách thực hiện đúng cách.

Bước 3 – Bật chế độ xem trước PHP 8 (bước tùy chọn)

Chúng tôi yêu thích chức năng xem trước của họ, chức năng này cho phép chúng ta xem trước các trang web ở các phiên bản PHP khác nhau và tiết lộ bất kỳ vấn đề nào mà không có nguy cơ vi phạm bất kỳ điều gì.

Điều này được thực hiện bằng cách chỉ cần nhấp vào nút trên bảng điều khiển và đăng nhập vào quản trị viên WordPress. Ở chế độ xem trước, bạn có thể sử dụng trang web của mình theo phiên bản PHP đã chọn. Người dùng bình thường của trang web sẽ không bị ảnh hưởng.

Bước 4 – Kiểm tra

Nếu bạn có bộ nhớ đệm trên trang web của mình, hãy xóa nó, sau đó mở tất cả các trang trên trang web của bạn và kiểm tra tất cả chức năng.

Ví dụ:

  • Nếu bạn có một cửa hàng, hãy tạo một giao dịch thử nghiệm.
  • Nếu bạn có biểu mẫu liên hệ, hãy kiểm tra xem bạn có nhận được email thông báo hay không.
  • Nếu bạn có một trang web đặt phòng, hãy tạo một lượt đặt phòng thử nghiệm.

Nếu trang web của bạn bị hỏng và hiển thị thông báo lỗi nghiêm trọng thì đây là những việc cần làm.

Bước 5 – Kiểm tra nhật ký lỗi PHP

Trang web của bạn có thể trông ổn nhưng nhật ký lỗi sẽ hiển thị các lỗi có thể không rõ ràng.

Bạn thường có thể tìm thấy nhật ký lỗi PHP trong tài khoản lưu trữ của mình. Khi bạn mở nó lên, hãy tìm bất kỳ tin nhắn nào không phải là cảnh báo hoặc thông báo.

Bước 6 – Chuyển đổi

Khi bạn chắc chắn rằng tất cả đều ổn, đã đến lúc chuyển sang PHP 8. Bạn có thể thực hiện việc này trong tài khoản lưu trữ của mình. Phương pháp chính xác sẽ khác nhau tùy thuộc vào nhà cung cấp dịch vụ lưu trữ của bạn là ai. Đi tới khu vực quản trị tài khoản lưu trữ của bạn và tìm nó dưới dạng phần mềm hoặc lập trình, sau đó chọn PHP 8.

Trong tương lai, hãy theo dõi nhật ký lỗi PHP để biết bất kỳ vấn đề nào khác.

5. Các vấn đề không tương thích PHP8 phổ biến

Nếu bạn là nhà phát triển, phần tiếp theo này rất quan trọng vì chúng tôi đã ghi lại các bản sửa lỗi phổ biến nhất mà chúng tôi đã thực hiện trên nhiều plugin và chủ đề mà chúng tôi đang hoạt động trên trang web của khách hàng.

Tốt nhất, bạn nên luôn liên hệ với nhà phát triển ban đầu của chủ đề hoặc plugin. Đôi khi điều này không thể thực hiện được do plugin không được hỗ trợ hoặc thậm chí bị bỏ rơi.

Dưới đây là tóm tắt các vấn đề phổ biến nhất mà chúng tôi gặp phải:

5.1. Gọi hàm không xác định create_function()

Create_function đã bị xóa trong PHP 8 và nên được thay thế bằng một hàm ẩn danh như thế này:

Mã nguồn [Chọn]
function() {}
5.2. Chuỗi không có dấu ngoặc kép

Trước PHP 8, các chuỗi không trích dẫn sẽ được coi là một chuỗi:

Mã nguồn [Chọn]
'order' => DESC
Bây giờ cần có dấu ngoặc kép:

Mã nguồn [Chọn]
'order' => 'DESC'
5.3. Thứ tự tham số cài đặt

Trước PHP 8, các tham số trong hàm implode có thể theo một trong hai thứ tự. Trong PHP 8, tham số $glue phải ở đầu tiên.

Vì vậy, điều này:

Mã nguồn [Chọn]
$where_str = implode( $where, ' AND ' );
Bây giờ nên là:

Mã nguồn [Chọn]
$where_str = implode( ' AND ', $where);
5.4. Lỗi đánh máy

Trong các phiên bản trước của PHP, các chuỗi chứa số hợp lệ có thể được sử dụng ngầm làm số. Chuỗi bây giờ sẽ được truyền.

Ví dụ: trước PHP 8, điều này sẽ hoạt động:

Mã nguồn [Chọn]
$days = '2'; $price = 12.99; $summ = $cost = $price / $days;
Chuỗi bây giờ phải được truyền đúng cách:

Mã nguồn [Chọn]
$days = '2'; $price = 12.99; $summ = $cost = $price / (int)$days;
Xem tại đây để biết danh sách đầy đủ các thay đổi vi phạm

6. Cách khắc phục lỗi nghiêm trọng của WordPress

Nếu sau khi nâng cấp lên PHP 8, bạn thấy màn hình xuất hiện lỗi nghiêm trọng như bên dưới và trang web của bạn có vẻ bị hỏng, bạn nên làm gì?


Đây là lời khuyên của chúng tôi:

6.1. Hạ cấp xuống PHP 7.4

Có, bạn có thể hạ cấp xuống các phiên bản PHP cũ hơn. Quay lại bảng điều khiển tài khoản lưu trữ của bạn và chuyển phiên bản PHP trở lại cài đặt trước đó, ví dụ: PHP 7.4. Nếu bạn không tìm thấy tùy chọn, máy chủ của bạn sẽ trợ giúp.

6.2. Kiểm tra nhật ký lỗi PHP

Nhật ký lỗi sẽ cho bạn biết nguyên nhân gây ra lỗi, chủ đề hoặc plugin của bạn. Bạn sẽ tìm thấy nhật ký lỗi PHP có sẵn từ bảng điều khiển máy chủ của mình.

Khi bạn mở nhật ký lỗi, hãy tìm kiếm nhanh các từ PHP Fatal.

Đây là một lỗi ví dụ:

Mã nguồn [Chọn]
PHP Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /wp-content/plugins/google-map-wp/includes/class-hugeit-maps-query.php:85
Từ lỗi này, chúng tôi có thể biết rằng chính plugin có slug google-map-wp đang gây ra sự cố.

Chuyển đến tab plugin trong màn hình quản trị WordPress của bạn và nhấp vào liên kết Xem chi tiết bên cạnh tên plugin và điều đó sẽ dẫn bạn đến trang plugin tại   Đăng nhập để xem liên kết hoặc trang web riêng của nhà phát triển.

6.3. Liên hệ với nhà phát triển

Nếu plugin được hỗ trợ tích cực thì lựa chọn tốt nhất của bạn là liên hệ với nhà phát triển để cho họ biết lỗi. Họ sẽ khắc phục sự cố và phát hành bản cập nhật, lúc đó bạn có thể nâng cấp lên PHP 8 một cách an toàn.

Nếu plugin chưa được cập nhật trong một thời gian hoặc có vẻ như bị bỏ rơi thì tùy chọn an toàn nhất trong tương lai là xóa plugin đó và tìm plugin thay thế.

7. Cách nâng cấp lên PHP dễ dàng hơn vào lần tiếp theo

Cách tốt nhất để đảm bảo trang web WordPress của bạn phù hợp với tương lai là luôn chọn các plugin và chủ đề đáng tin cậy và được hỗ trợ tốt.

Những việc khác bạn có thể làm là:

  • Giữ số lượng plugin bạn đã kích hoạt trên trang web của mình ở mức tối thiểu.
  • Hãy theo dõi các phiên bản PHP mới nhất và ghi chú khi nào chúng sẽ hết tuổi thọ.
  • Bắt đầu quá trình nâng cấp sớm nhất có thể để nhà phát triển plugin có thời gian giải quyết vấn đề.

8. Các câu hỏi thường gặp

8.1. Tôi có thể quay lại PHP 7.4 nếu gặp vấn đề không?

Điều này phụ thuộc vào máy chủ của bạn, nhưng thường thì bạn có thể quay lại phiên bản PHP cũ hơn nếu bạn phát hiện ra sự cố khiến trang web của mình bị hỏng.

8.2. PHP 7.4 được hỗ trợ trong bao lâu?

PHP 7.4 được phát hành vào ngày 28 tháng 11 năm 2019. Sau ngày phát hành, nó đã được hỗ trợ tích cực trong hai năm. Trong năm thứ ba sau khi phát hành, các phiên bản PHP chỉ được hỗ trợ cho các vấn đề bảo mật. Đối với PHP 7.4, khoảng thời gian đó sẽ kết thúc vào ngày 28 tháng 11 năm 2022. Mọi sự cố được phát hiện sau ngày đó sẽ không được khắc phục.

8.3. WordPress có tương thích với PHP 8 không?

Bản phát hành WordPress core mới nhất tương thích với PHP 8. Trước khi nâng cấp, hãy đảm bảo bạn có phiên bản WordPress mới nhất.

8.4. Woocommerce có tương thích với PHP 8 không?

Bản phát hành mới nhất của Woocommerce tương thích với PHP 8. Trước khi nâng cấp, hãy đảm bảo bạn có phiên bản plugin mới nhất. Lưu ý rằng mọi plugin mở rộng chức năng Woocommerce có thể không tương thích với PHP 8.