Trang chủ Wordpress PHP 8: Những gì người dùng WordPress cần biết

PHP 8: Những gì người dùng WordPress cần biết

Đăng bởi Phùng Thắng
1 bình luận 367 lượt xem Tặng quà

PHP 8.0 được thiết lập để phát hành vào ngày 26 tháng 11 năm 2020. Là ngôn ngữ lập trình cung cấp năng lượng cho các trang web WordPress.

Phiên bản mới nhất của PHP cung cấp các tính năng mới mà các nhà phát triển sẽ thấy hữu ích và những cải tiến hứa hẹn sẽ tăng cường đáng kể hiệu suất và bảo mật về lâu dài. Nó cũng loại bỏ hoàn toàn một số hàm trước đây không dùng nữa. PHP 8 là một sự thay đổi lớn so với các phiên bản trước.

Trong bài viết này, mình hy vọng sẽ cung cấp thông tin chi tiết về ý nghĩa của điều này đối với chủ sở hữu trang web WordPress.

Có nên nâng cấp lên PHP 8 ngay không?

Không. Phiên bản chính sắp tới của WordPress, 5.6, được dự định là “phiên bản beta tương thích với PHP 8” theo cuộc trò chuyện dành cho nhà phát triển WordPress ngày 18 tháng 11.

Điều này có nghĩa là hầu hết các chức năng cốt lõi của WordPress sẽ hoạt động, nhưng các lỗi không mong muốn vẫn có thể xảy ra trong một thời gian, ngay cả khi không có sự hiện diện của các plugin hoặc theme bổ sung.

WordPress đã kêu gọi thử nghiệm PHP 8 để tìm và sửa nhiều lỗi còn lại nhất có thể.

Một số lượng lớn các plugin và chủ đề WordPress sẽ không tương thích ngay với PHP 8. Những plugin và theme này không gặp lỗi nghiêm trọng trong quá trình sử dụng vẫn có thể hiển thị một số lỗi không mong muốn trong một thời gian.

Điều này bao gồm những thay đổi đột phá nào?

Một số nhà phát triển từ lâu đã lập luận rằng PHP mặc định là không an toàn. Mặc dù điều này đang được tranh luận, nhưng đúng là các phiên bản PHP trước PHP 8 có khả năng chịu lỗi cao hơn và cố gắng rất nhiều để đảm bảo rằng mã sẽ chạy ngay cả khi có những lỗi nhỏ.

PHP 8 sử dụng cách gõ nghiêm ngặt hơn nhiều so với các phiên bản trước. Nhiều hàm tích hợp hiện nay kén chọn đầu vào hơn mà chúng chấp nhận và bản thân PHP 8 cũng nghiêm ngặt hơn về cách truyền đầu vào cho các hàm. Các vấn đề trước đây dẫn đến thông báo bây giờ dẫn đến cảnh báo và các vấn đề trước đây dẫn đến cảnh báo giờ dẫn đến lỗi.

Nói cách khác, PHP 8 không dễ dãi như các phiên bản trước. Nó sẽ không cố gắng hoàn toàn để làm cho code hoạt động cho dù bạn có viết thế nào đi nữa. Bạn sẽ phải viết chuẩn chỉ hơn.

Một số chức năng và tính năng không được dùng nữa trong PHP 7.x đã bị loại bỏ hoàn toàn. Bao gồm:

  • Biến $php_errormsg
  • Hàm create_function()
  • Lệnh ini mbstring.func_overload
  • Kiểu real
  • Lệnh ini allow_url_include
  • Hàm restore_include_path()
  • Hàm each()

Mặc dù hầu hết các plugin này không còn được sử dụng rộng rãi, nhưng đã xác định rằng create_ functions vẫn được sử dụng trong hơn 5.500 plugin WordPress, bao gồm các plugin cực kỳ phổ biến với hàng triệu lượt cài đặt.

Trong một số trường hợp, việc sử dụng các hàm không dùng nữa này có thể nhằm mục đích tương thích ngược với các phiên bản PHP cũ hơn. Tuy nhiên, nhiều plugin sẽ cần tái cấu trúc khi PHP 8 được sử dụng nhiều hơn.

Khá nhiều plugin và theme cũng phụ thuộc nhiều vào thư viện của bên thứ ba. Các nhà phát triển WordPress có thể cần đợi cho đến khi chúng được cập nhật để tương thích. Nếu các thư viện này không được duy trì hoặc cập nhật để tương thích với PHP 8, có thể cần phải phân nhánh các thư viện này, tìm các giải pháp thay thế hoặc thậm chí viết lại các plugin và chủ đề từ đầu.

Để biết thêm thông tin chuyên sâu về những gì đã thay đổi, nhóm phát triển Yoast đã tạo ra một báo cáo khả năng tương thích tuyệt vời dành cho các nhà phát triển muốn đảm bảo phần mềm của họ tương thích.

Có những lo ngại nào về bảo mật?

PHP cho phép một cái gì đó được gọi là “Type Juggling”. Điều này có nghĩa là nó có thể xử lý các chuỗi chứa số giống như cách nó xử lý số nguyên hoặc số float và có thể thực hiện phép toán và thực hiện so sánh giữa các kiểu khác nhau này miễn là toán tử so sánh == được sử dụng thay vì toán tử so sánh chặt chẽ ===.

Đối với các nhà phát triển, Type Juggling có thể rất hữu ích và tiết kiệm thời gian khi viết mã, nhưng đôi khi nó có thể dẫn đến hành vi bất thường.

Một ví dụ cổ điển về cách Type Juggling có thể gây ra vấn đề là so sánh 0 == ”blah” sẽ trả về true. PHP 8 sửa loại hành vi này để các so sánh này và các so sánh tương tự (ví dụ: 0 == ”0blah”) sẽ trả về false.

Nhìn chung, điều này thực sự sẽ cải thiện bảo mật. Tuy nhiên, một số lượng lớn các plugin sử dụng các so sánh lỏng lẻo này, đôi khi cho các chức năng quan trọng. Hầu hết các trường hợp, chúng sẽ tiếp tục hoạt động bình thường khi sử dụng PHP 8, nhưng một vài trong số chúng thực sự có thể dựa vào hành vi không chính xác để hoạt động bình thường.

Trong một số trường hợp hiếm hoi, điều này có thể mở ra các lỗ hổng bảo mật mới.

Việc cập nhật mã để tương thích với PHP 8 có thể là quá nhiều đối với một số nhà phát triển và nhiều plugin và theme có thể bị bỏ rơi, mặc dù điều này ít xảy ra hơn đối với các plugin và theme của các công ty lớn. Bất kỳ vấn đề bảo mật nào trong các plugin và theme bị bỏ rơi này mà không được vá, điều đó có thể gây ra thảm họa.

Tương tự như vậy, nhiều trang web có thể vẫn sử dụng phiên bản PHP không an toàn để giữ cho các plugin cũ của chúng hoạt động.

Cuối cùng, một số loại phần mềm độc hại nhất định dựa vào các chức năng không dùng nữa cũng như khả năng chịu lỗi của PHP để làm xáo trộn ý định của chúng. Các chủng này sẽ ngừng hoạt động hoặc trở nên đáng chú ý hơn trong môi trường PHP 8, nhưng các tác giả phần mềm độc hại sẽ thích ứng kịp thời.

Những thay đổi nào sắp tới?

Một tính năng thú vị tiềm năng sắp có trong PHP 8 là JIT (Just In Time). PHP là một ngôn ngữ thông dịch, có nghĩa là nó được dịch sang mã máy khi nó chạy. JIT theo dõi mã thường được sử dụng và cố gắng tối ưu hóa bản dịch mã máy để có thể sử dụng lại. Điều này có thể dẫn đến cải thiện hiệu suất lớn cho các chức năng cụ thể.

Việc bổ sung JIT vào các ngôn ngữ khác, chẳng hạn như JavaScript, trong lịch sử đã dẫn đến sự bùng nổ của các ứng dụng mới. Ví dụ, máy ảo chạy bằng JavaScript sẽ không thể tưởng tượng được trong những ngày đầu của web. Một số tác vụ trước đây yêu cầu một mô-đun được cài đặt trên máy chủ sẽ trở nên thực tế khi sử dụng các thư viện PHP thuần túy.

Tuy nhiên, hiện tại, việc cải thiện hiệu suất thực tế cho các ứng dụng web như WordPress là rất ít và sẽ mất một thời gian dài trước khi người dùng hoặc nhà phát triển WordPress trung bình có được những lợi ích của tính năng mới này.

Mặc dù có nhiều tính năng mới khác giúp cuộc sống của các nhà phát triển dễ dàng hơn, nhưng không có khả năng chúng sẽ được sử dụng trong các plugin và theme WordPress trong tương lai gần, vì hầu hết sẽ phá vỡ khả năng tương thích ngược với các phiên bản PHP trước đó vẫn được nhiều trang web WordPress sử dụng.

Các nhà phát triển phải cập nhật trong bao lâu?

Mỗi phiên bản PHP có vòng đời 2 năm để các lỗi được sửa và thêm một năm để các vấn đề bảo mật được vá. PHP 7.4 ra mắt vào tháng 11 năm 2019. Là phiên bản cuối cùng của PHP 7, điều này có nghĩa là các lỗi trong PHP 7.4 sẽ được sửa cho đến tháng 11 năm 2021 và các vấn đề bảo mật sẽ được vá cho đến tháng 11 năm 2022.

Điều này có nghĩa là tháng 11 năm 2022 có thể được coi là ngày giới hạn của PHP 7.4: tất cả mã PHP phải tương thích tối thiểu với PHP 8.0 vào thời điểm này, hoặc có nguy cơ bị mắc kẹt trên phiên bản PHP có khả năng bị tấn công.

Lời kết

Quá trình chuyển đổi sang PHP 8 là một trong những thay đổi rộng nhất và có tác động lớn nhất mà ngôn ngữ này từng thấy. Mặc dù nó sẽ có giá trị về lâu dài, nhưng chủ sở hữu và nhà phát triển trang WordPress có thể sẽ phải trải qua một chặng đường khó khăn trong ngắn hạn.

Nếu bạn là chủ sở hữu trang web, hãy bắt đầu theo dõi xem plugin và theme nào của bạn đang được cập nhật hoặc kiểm tra khả năng tương thích và lập kế hoạch thay thế những plugin và theme không tương thích.

Nếu bạn là nhà phát triển, hãy bắt đầu kiểm tra mã của bạn và bất kỳ phần phụ thuộc nào trên PHP 8, nếu bạn chưa có và bắt đầu lên kế hoạch phân nhánh hoặc thay thế bất kỳ thư viện nào không được cập nhật. Hệ sinh thái WordPress đã trải qua quá trình chuyển đổi khó khăn trong quá khứ và cộng đồng mã nguồn mở luôn phát triển và thích nghi.

Sưu tầm: wordfence blog

Tặng quà cho tác giả

Nếu bạn thấy bài viết giúp ích cho bạn, mời mình một ly cafe nhé!

5 1 vote
Đánh giá bài viết

Bài viết cùng chuyên mục

Nhận thông báo qua Email
Thông báo về
guest

1 bình luận
Mới nhất
Cũ nhất
Inline Feedbacks
Xem tất cả bình luận
Tien Dung

Định lên mà cũng lười, sợ nó lỗi :D chắc chờ thêm tí đã để các plugin nó tương thích rồi lên.

1
0
Hãy để lại bình luận hoặc câu hỏi nhé!x