Kiến thức Hữu ích 😍

Lỗi MySQL PHP trong WordPress: Nguyên nhân & Cách khắc phục


Bạn đang hào hứng cài đặt WordPress nhưng lại bị chặn đứng bởi thông báo lỗi “Your PHP installation appears to be missing the MySQL extension which is required by WordPress”? Đây là một trong những vấn đề phổ biến nhất mà người dùng mới thường gặp phải. Lỗi này xảy ra khi môi trường PHP trên máy chủ của bạn thiếu một “cầu nối” cần thiết để giao tiếp với cơ sở dữ liệu MySQL là gì, khiến cho WordPress không thể hoàn tất quá trình cài đặt. Tuy nhiên, đừng quá lo lắng, vì đây là một lỗi hoàn toàn có thể khắc phục được. Bài viết này sẽ là kim chỉ nam giúp bạn hiểu rõ nguyên nhân gốc rễ, sự khác biệt giữa các phần mở rộng MySQL, và quan trọng nhất là hướng dẫn chi tiết từng bước để kiểm tra, kích hoạt và xử lý triệt để vấn đề này.

Nguyên nhân lỗi thiếu phần mở rộng MySQL trong PHP khi cài WordPress

Khi gặp lỗi thiếu phần mở rộng MySQL, nhiều người thường bối rối không hiểu tại sao. Nguyên nhân cốt lõi không phức tạp nhưng lại liên quan trực tiếp đến sự phát triển của ngôn ngữ lập trình PHP là gì và cách máy chủ web được cấu hình.

Vì sao PHP thiếu phần mở rộng MySQL?

Lý do chính yếu bắt nguồn từ việc các phiên bản PHP hiện đại đã ngừng hỗ trợ một phần mở rộng (extension) cũ có tên là mysql. Kể từ phiên bản PHP 7.0 trở đi, phần mở rộng này đã bị loại bỏ hoàn toàn do tồn tại nhiều lỗ hổng bảo mật và hiệu suất kém. Thay vào đó, PHP chuyển sang sử dụng các phần mở rộng mới, an toàn và hiệu quả hơn là mysqli (MySQL Improved) và pdo_mysql (PHP Data Objects).

Một nguyên nhân khác là do cấu hình mặc định của một số nhà cung cấp dịch vụ hosting. Để tối ưu hóa hiệu suất và bảo mật, họ có thể tắt sẵn một số phần mở rộng ít được sử dụng, và đôi khi mysqli hoặc pdo_mysql lại nằm trong số đó. Do vậy, dù chúng tồn tại trên máy chủ, bạn vẫn cần phải kích hoạt chúng một cách thủ công.

Hình minh họa

Tác động đến quá trình cài WordPress và kết nối database

Hãy tưởng tượng PHP là người phiên dịch và WordPress là vị khách muốn nói chuyện với cơ sở dữ liệu MySQL. Phần mở rộng MySQL chính là cuốn từ điển mà người phiên dịch cần để thực hiện công việc. Khi cuốn từ điển này bị thiếu, PHP không thể hiểu và truyền tải yêu cầu từ WordPress đến cơ sở dữ liệu.

Kết quả là toàn bộ quá trình cài đặt WordPress sẽ bị đình trệ ngay từ bước đầu tiên. WordPress không thể tạo bảng, không thể lưu trữ thông tin cấu hình, và không thể xác thực kết nối tới database. Thông báo lỗi bạn nhận được chính là lời cảnh báo rằng “cuộc giao tiếp” quan trọng này đã thất bại, và bạn cần cung cấp cho PHP công cụ cần thiết để tiếp tục.

Sự khác biệt giữa các phần mở rộng MySQL: mysql, mysqli và pdo_mysql

Để giải quyết lỗi này, điều quan trọng là phải hiểu rõ “nhân vật chính” gây ra vấn đề: các phần mở rộng MySQL. Chúng không hề giống nhau, và việc lựa chọn đúng phần mở rộng là chìa khóa để đảm bảo website WordPress của bạn hoạt động ổn định và an toàn.

Hình minh họa

Mysql extension là gì và lí do bị loại bỏ

Phần mở rộng mysql là thế hệ đầu tiên, được giới thiệu từ những ngày đầu của PHP. Nó đã phục vụ rất tốt trong một thời gian dài, nhưng công nghệ luôn tiến về phía trước. Theo thời gian, mysql bộc lộ nhiều nhược điểm chí mạng: nó không hỗ trợ các tính năng mới của MySQL, hiệu suất chậm hơn, và đặc biệt là rất dễ bị tấn công SQL injection – một trong những hình thức tấn công web phổ biến và nguy hiểm nhất.

Vì những lý do này, cộng đồng PHP là gì đã quyết định “khai tử” mysql kể từ phiên bản PHP 7.0. Việc tiếp tục sử dụng nó trên các phiên bản PHP mới không chỉ là không thể, mà còn là một rủi ro bảo mật nghiêm trọng cho website của bạn.

Mysqli và pdo_mysql – phần mở rộng mới, ưu điểm và tính năng

Để thay thế cho mysql, hai “người kế nhiệm” hiện đại đã ra đời: mysqlipdo_mysql. WordPress hiện tại ưu tiên sử dụng một trong hai phần mở rộng này để kết nối với cơ sở dữ liệu.

Mysqli (MySQL Improved) là phiên bản cải tiến trực tiếp của mysql. Nó cung cấp hiệu suất tốt hơn, hỗ trợ đầy đủ các tính năng của các phiên bản MySQL mới, và quan trọng nhất là hỗ trợ Prepared Statements, giúp ngăn chặn hiệu quả các cuộc tấn công SQL injection. Mysqli được thiết kế để làm việc riêng với cơ sở dữ liệu MySQL, mang lại sự tối ưu hóa cao nhất.

PDO_MySQL (PHP Data Objects) là một phần của thư viện PDO, một lớp trừu tượng hóa cơ sở dữ liệu. Điểm mạnh lớn nhất của PDO là nó cho phép bạn viết cùng một đoạn mã để làm việc với nhiều loại cơ sở dữ liệu khác nhau (MySQL, PostgreSQL, SQLite, v.v.) chỉ bằng cách thay đổi chuỗi kết nối. Điều này mang lại sự linh hoạt tuyệt vời cho các nhà phát triển. Giống như mysqli, pdo_mysql cũng hỗ trợ Prepared Statements và có tính bảo mật cao.

WordPress sẽ tự động kiểm tra xem máy chủ của bạn có mysqli hay pdo_mysql hay không và sử dụng phần mở rộng nào có sẵn. Vì vậy, công việc của bạn là đảm bảo ít nhất một trong hai phần mở rộng này được kích hoạt.

Hình minh họa

Hướng dẫn kiểm tra và kích hoạt phần mở rộng MySQL trên máy chủ PHP

Bây giờ bạn đã hiểu nguyên nhân, hãy cùng bắt tay vào hành động. Việc đầu tiên là xác định xem máy chủ của bạn có thực sự thiếu các phần mở rộng cần thiết hay không, sau đó tiến hành kích hoạt chúng.

Cách kiểm tra MySQL extension đã được kích hoạt hay chưa

Có nhiều cách để “chẩn đoán” tình trạng của PHP là gì, nhưng đây là ba phương pháp phổ biến và hiệu quả nhất:

  1. Sử dụng file phpinfo(): Đây là cách đơn giản nhất. Bạn hãy tạo một file mới trong thư mục gốc của website (ví dụ: kiemtra.php) với nội dung sau: <?php phpinfo(); ?>. Sau đó, truy cập vào file này qua trình duyệt (ví dụ: yourdomain.com/kiemtra.php). Một trang thông tin chi tiết về cấu hình PHP sẽ hiện ra. Bạn chỉ cần nhấn Ctrl + F và tìm kiếm “mysqli” hoặc “pdo_mysql“. Nếu bạn thấy các mục tương ứng, có nghĩa là chúng đã được cài đặt.
  2. Sử dụng lệnh PHP CLI (Command Line Interface): Nếu bạn có quyền truy cập SSH vào máy chủ, bạn có thể chạy lệnh php -m | grep mysql. Lệnh này sẽ liệt kê tất cả các module PHP đã được tải. Nếu kết quả trả về có mysqlipdo_mysql, bạn có thể yên tâm.
  3. Sử dụng công cụ trong Control Panel của hosting: Hầu hết các nhà cung cấp hosting (như AZWEB) đều cung cấp giao diện quản lý như cPanel hoặc DirectAdmin. Trong đó thường có mục “Select PHP Version” hoặc “PHP Extensions”. Tại đây, bạn có thể dễ dàng xem danh sách tất cả các phần mở rộng và kiểm tra xem mysqli hay pdo_mysql đã được tích chọn (kích hoạt) hay chưa.

Hình minh họa

Hướng dẫn bật hoặc cài đặt phần mở rộng MySQL (mysqli, pdo_mysql) trên máy chủ

Nếu sau khi kiểm tra, bạn phát hiện ra các phần mở rộng này chưa được kích hoạt, hãy làm theo các bước dưới đây tùy thuộc vào môi trường của bạn:

  • Trên Hosting có Control Panel (cPanel/DirectAdmin): Đây là trường hợp đơn giản nhất. Bạn chỉ cần vào mục “Select PHP Version”, tìm đến mysqlipdo_mysql trong danh sách, sau đó tích vào ô bên cạnh để bật chúng lên. Đừng quên nhấn “Save” hoặc “Apply” để lưu lại thay đổi.
  • Trên máy chủ riêng (VPS/Dedicated Server): Bạn sẽ cần truy cập vào máy chủ qua SSH.
    • Chỉnh sửa file php.ini: Đầu tiên, bạn cần xác định vị trí file php.ini bằng lệnh php --ini. Sau đó, mở file này bằng một trình soạn thảo văn bản (như nano hoặc vim) và tìm các dòng extension=mysqliextension=pdo_mysql. Nếu có dấu chấm phẩy (;) ở đầu dòng, hãy xóa nó đi để bỏ ghi chú (uncomment).
    • Cài đặt extension nếu chưa có: Nếu bạn không tìm thấy các dòng trên, có thể phần mở rộng chưa được cài đặt. Bạn cần cài chúng bằng trình quản lý gói của hệ điều hành.
      • Trên Ubuntu/Debian: sudo apt-get install php-mysql
      • Trên CentOS/RHEL: sudo yum install php-mysql

      Lưu ý: Bạn có thể cần chỉ định phiên bản PHP, ví dụ php8.1-mysql.

  • Khởi động lại Web Server: Sau khi thực hiện bất kỳ thay đổi nào (bật qua control panel, sửa file php.ini, hay cài đặt mới), bước cuối cùng và cực kỳ quan trọng là phải khởi động lại dịch vụ web server (Apache hoặc Nginx) để các thay đổi có hiệu lực.
    • Với Apache: sudo systemctl restart apache2 hoặc sudo service httpd restart
    • Với Nginx (và PHP-FPM): sudo systemctl restart nginxsudo systemctl restart php-fpm

Sau khi hoàn tất, hãy thử tải lại trang cài đặt WordPress. Lỗi “Missing MySQL extension” sẽ biến mất.

Hình minh họa

Tương thích PHP và WordPress: lưu ý và điều chỉnh

Việc kích hoạt đúng phần mở rộng MySQL chỉ là một phần của câu chuyện. Để WordPress hoạt động mượt mà và an toàn, bạn cần đảm bảo sự tương thích hoàn hảo giữa phiên bản PHP là gì bạn đang dùng và mã nguồn WordPress.

Phiên bản PHP phù hợp với WordPress và các extension MySQL

WordPress luôn khuyến nghị người dùng sử dụng các phiên bản PHP mới nhất được hỗ trợ. Hiện tại, khuyến cáo sử dụng PHP 7.4 trở lên. Các phiên bản này không chỉ mang lại hiệu suất vượt trội mà còn nhận được các bản cập nhật bảo mật thường xuyên. Quan trọng hơn, chúng được xây dựng để hoạt động hoàn hảo với các phần mở rộng hiện đại như mysqlipdo_mysql.

Việc chạy WordPress trên một phiên bản PHP quá cũ (dưới 7.4) không chỉ làm giảm tốc độ trang web mà còn đặt bạn vào nguy cơ bị tấn công do các lỗ hổng bảo mật đã được biết đến nhưng không còn được vá. Ngược lại, sử dụng phiên bản PHP quá mới (phiên bản beta hoặc chưa ổn định) có thể gây ra xung đột với các plugin hoặc theme chưa được cập nhật kịp. Vì vậy, hãy luôn kiểm tra yêu cầu phiên bản PHP trên trang chủ của WordPress trước khi cài đặt hoặc nâng cấp.

Cấu hình WordPress để tương thích và tránh lỗi kết nối MySQL

Trong hầu hết các trường hợp, WordPress rất thông minh trong việc tự động phát hiện và sử dụng phần mở rộng MySQL có sẵn (mysqli hoặc pdo_mysql). Bạn không cần phải can thiệp vào mã nguồn. Tuy nhiên, có một file cấu hình quan trọng bạn cần nắm rõ là wp-config.php.

File này chứa các thông tin kết nối cơ sở dữ liệu quan trọng như tên database, tên người dùng, mật khẩu và địa chỉ máy chủ. Khi bạn thực hiện quá trình cài đặt WordPress, các thông tin này sẽ được tự động điền vào. Nếu sau này bạn cần thay đổi thông tin cơ sở dữ liệu hoặc di chuyển website, bạn sẽ cần chỉnh sửa file này một cách thủ công. Hãy đảm bảo rằng các thông tin trong wp-config.php luôn chính xác tuyệt đối, vì chỉ một sai sót nhỏ cũng có thể dẫn đến lỗi “Error establishing a database connection“, một lỗi phổ biến khác liên quan đến kết nối MySQL.

Hình minh họa

Các bước khắc phục lỗi và kiểm thử WordPress sau khi sửa lỗi

Sau khi bạn đã thực hiện các bước để kích hoạt phần mở rộng MySQL, điều quan trọng là phải kiểm tra lại để chắc chắn rằng mọi thứ đã hoạt động như mong đợi. Đừng bỏ qua bước xác nhận cuối cùng này.

Thực hiện kiểm tra lại kết nối database trong WordPress

Cách đơn giản và trực tiếp nhất để kiểm tra là quay trở lại trang cài đặt WordPress mà trước đó đã báo lỗi. Hãy làm mới (refresh) trang web (nhấn F5 hoặc Ctrl+R).

Nếu bạn đã kích hoạt thành công phần mở rộng mysqli hoặc pdo_mysql và khởi động lại web server, thông báo lỗi “Missing MySQL extension” sẽ không còn xuất hiện nữa. Thay vào đó, bạn sẽ thấy giao diện cài đặt WordPress quen thuộc, yêu cầu bạn chọn ngôn ngữ và nhập thông tin kết nối cơ sở dữ liệu. Đây là dấu hiệu rõ ràng nhất cho thấy “cầu nối” giữa PHP và MySQL đã được thiết lập thành công.

Hình minh họa

Thử cài đặt hoặc chạy lại WordPress, đảm bảo mọi thứ hoạt động ổn định

Bây giờ, hãy tiếp tục quá trình cài đặt. Điền đầy đủ thông tin về tên cơ sở dữ liệu, tên người dùng, mật khẩu và máy chủ cơ sở dữ liệu mà nhà cung cấp hosting đã cung cấp cho bạn. Nhấn nút “Submit” (Gửi).

Nếu WordPress có thể kết nối thành công, nó sẽ hiển thị một thông báo xác nhận và cho phép bạn “Run the installation” (Chạy cài đặt). Hãy tiếp tục hoàn thành các bước cuối cùng như đặt tên cho trang web, tạo tài khoản quản trị viên. Sau khi cài đặt xong, hãy thử đăng nhập vào trang quản trị, tạo một bài viết mới, và duyệt qua trang chủ để đảm bảo mọi chức năng cơ bản đều hoạt động trơn tru. Việc này giúp xác nhận rằng không chỉ kết nối ban đầu mà toàn bộ quá trình tương tác với cơ sở dữ liệu đều đang diễn ra ổn định.

Common Issues/Troubleshooting

Ngay cả khi đã làm theo hướng dẫn, đôi khi bạn vẫn có thể gặp phải một vài trở ngại. Dưới đây là cách xử lý một số sự cố phổ biến nhất.

Phần mở rộng vẫn không kích hoạt được dù đã cài đặt

Bạn đã chắc chắn rằng mình đã cài đặt php-mysql hoặc bỏ ghi chú trong file php.ini, nhưng phpinfo() vẫn không hiển thị phần mở rộng? Dưới đây là một vài lý do và cách giải quyết:

  • Chỉnh sửa sai file php.ini: Một máy chủ có thể có nhiều file php.ini cho các môi trường khác nhau (CLI, Apache, FPM). Hãy chạy lệnh php --ini để xem file cấu hình nào đang được PHP sử dụng cho web server và đảm bảo bạn đang chỉnh sửa đúng file đó.
  • Quên khởi động lại Web Server: Đây là lỗi phổ biến nhất. Bất kỳ thay đổi nào trong cấu hình PHP đều yêu cầu bạn phải khởi động lại Apache hoặc PHP-FPM để nó được áp dụng. Hãy chạy lại lệnh sudo systemctl restart apache2 hoặc sudo systemctl restart php-fpm.
  • Vấn đề về quyền truy cập: Đảm bảo rằng người dùng chạy web server có quyền đọc các file của phần mở rộng. Lỗi này hiếm gặp nhưng vẫn có thể xảy ra trên các máy chủ được cấu hình tùy chỉnh.

Hình minh họa

Lỗi phiên bản PHP không tương thích với WordPress

Bạn đã sửa được lỗi MySQL extension, nhưng lại gặp các lỗi lạ khác hoặc một màn hình trắng (White Screen of Death)? Nguyên nhân có thể là do phiên bản PHP là gì của bạn không tương thích với phiên bản WordPress hoặc một plugin/theme nào đó.

  • Kiểm tra yêu cầu hệ thống: Luôn truy cập trang yêu cầu của WordPress để xem phiên bản PHP được khuyến nghị.
  • Nâng cấp/Hạ cấp PHP: Sử dụng công cụ “Select PHP Version” trong control panel của hosting để chuyển đổi giữa các phiên bản PHP. Nếu bạn đang dùng phiên bản quá cũ (ví dụ 5.6), hãy nâng cấp lên 7.4 hoặc 8.0. Nếu bạn đang dùng phiên bản mới nhất (ví dụ 8.2) và gặp lỗi, hãy thử hạ xuống một phiên bản ổn định hơn như 8.1 hoặc 8.0 để kiểm tra xem có phải do xung đột hay không. Việc lựa chọn một phiên bản PHP vừa hiện đại vừa được hỗ trợ rộng rãi là giải pháp tốt nhất.

Best Practices

Để tránh gặp lại lỗi này và giữ cho website WordPress của bạn luôn hoạt động trong trạng thái tốt nhất, hãy tuân thủ một vài nguyên tắc vàng sau đây.

  • Luôn kiểm tra phiên bản PHP và extension trước khi cài WordPress: Trước khi tải lên mã nguồn WordPress, hãy dành vài phút để tạo file phpinfo() hoặc kiểm tra trong control panel. Việc này giúp bạn đảm bảo môi trường hosting đã sẵn sàng, tiết kiệm thời gian xử lý sự cố sau này.
  • Ưu tiên sử dụng mysqli hoặc pdo_mysql thay vì mysql cũ: Như đã giải thích, mysql đã lỗi thời và không an toàn. Hãy chắc chắn rằng máy chủ của bạn đang sử dụng các phần mở rộng hiện đại để tận dụng tối đa hiệu suất và các lớp bảo mật tiên tiến.
  • Sao lưu cấu hình và database trước khi thay đổi: Bất cứ khi nào bạn định chỉnh sửa các file cấu hình quan trọng như php.ini hay wp-config.php, hoặc nâng cấp phiên bản PHP, hãy tạo một bản sao lưu. Nếu có sự cố xảy ra, bạn có thể dễ dàng khôi phục lại trạng thái hoạt động trước đó.
  • Tránh chỉnh sửa file hệ thống khi không chắc chắn: Nếu bạn không quen thuộc với việc quản trị máy chủ qua dòng lệnh, hãy ưu tiên sử dụng các công cụ đồ họa có sẵn trong control panel của hosting. Việc chỉnh sửa sai một file hệ thống có thể gây ra những lỗi nghiêm trọng hơn. Khi cần thiết, đừng ngần ngại liên hệ với đội ngũ hỗ trợ kỹ thuật của nhà cung cấp hosting như AZWEB để được giúp đỡ.

Hình minh họa

Conclusion

Lỗi “Missing MySQL extension” trong quá trình cài đặt WordPress tuy có vẻ đáng sợ lúc đầu nhưng thực chất lại xuất phát từ một nguyên nhân rất rõ ràng: sự thiếu vắng cầu nối giao tiếp giữa PHP và cơ sở dữ liệu MySQL. Nguyên nhân chính là do các phiên bản PHP hiện đại đã loại bỏ phần mở rộng mysql cũ kỹ và yêu cầu sử dụng mysqli hoặc pdo_mysql an toàn, hiệu quả hơn.

Qua bài viết này, bạn đã học được cách xác định vấn đề, hiểu rõ sự khác biệt và ưu điểm của các phần mở rộng mới, cũng như các phương pháp chi tiết để kiểm tra và kích hoạt chúng trên nhiều môi trường hosting khác nhau. Bằng cách làm theo các bước hướng dẫn, bạn có thể nhanh chóng khắc phục lỗi và tiếp tục hành trình xây dựng website của mình. Để đảm bảo sự ổn định và an toàn lâu dài, hãy luôn cập nhật phiên bản PHP và WordPress, đồng thời tuân thủ các thực hành tốt nhất đã được đề cập. Chúc bạn thành công

Đánh giá