Kiểm tra và khắc phục lỗi website trên máy chủ Cloud Server

Website của bạn đang hoạt động rất tốt tại một dịch vụ hosting, hoặc đang hoạt động trên local mà không gặp bất cứ lỗi gì. Tuy nhiên sau khi đưa lên máy chủ thì xảy ra các lỗi như: trắng trang, lỗi 500, 403,… và không biết phải xử lí như thế nào. Mắt Bão sẽ hướng dẫn các bạn tìm nguyên nhân gây ra lỗi và cách để xử lí những lỗi đó qua bài viết sau.

  1. Xác định nguyên nhân

Để thực hiện xác định nguyên nhân một cách chính xác, các bạn cần cấu hình hiển thị thông báo lỗi trong thiết lập PHP. Để thực hiện, bạn cần xác định vị trí tập tin PHP.ini bằng cách sử dụng lệnh sau:

php –ini

Hoặc sử dụng lệnh

php -i | grep 'Configuration File'
Sau đó câu lệnh sẽ hiển thị vị trí tệp PHP.ini để bạn tiến hành cấu hình, bạn có thể thêm dòng sau vào file PHP.ini:
display_errors = on
Lưu lại sau đó khởi động lại PHP để máy chủ nhận cấu hình mới.


Thông thường sẽ có một số mã nguồn sẽ cần phải thiết lập thêm trong cấu hình website để có thể hiển thị lỗi, ví dụ:
Joomla  
- Đăng nhập trang quản trị: Site >> Global Configuration >> Server >> Error Reporting: Chọn Maximum
- Hoặc có thể điều chỉnh trong file configuration.php của mã nguồn, cấu hình biến $error_reporting sử dụng các giá trị sau:


-1: Tắt thông báo lỗi
30709: Hiển thị tất cả các lỗi ngoại trừ warnings và notices (cấu hình tương đương E_ALL & ~(E_NOTICE|E_WARNING) )
30711: Hiển thị tất cả các lỗi bao gồm warnings, không bao gồm notices (cấu hình tương đương  E_ALL & ~E_NOTICE )
30719: Hiển thị tất cả các lỗi bao gồm warnings và notices, không bao gồm E_STRIC (cấu hình tương đương  E_ALL &~ E_STRIC)
32767: Hiển thị tất cả các lỗi, warning, notices và các lỗi "strict standards" (ví dụ:  “Strict Standards: Non-static method … on line XX”) (cấu hình tương đương E_ALL )

- Với mục đích kiểm tra lỗi liên quan đến phiên bản PHP, phần cấu hình này nên sử dụng giá trị 32767 để hiển thị tất cả các lỗi bao gồm gợi ý của PHP về việc các hàm mà mã nguồn đang sử dụng có tương thích / phù hợp với phiên bản PHP mà hệ thống đang sử dụng hay không.


Ví dụ:
public $error_reporting = '32767:';
public $log_path = '/home/{user}/logs'; #Đường dẫn lưu file log


- Tùy thuộc vào phiên bản PHP máy chủ đang sử dụng mà cấu hình hiển thị tất cả các lỗi E_ALL khác nhau như sau:
32767 nếu là PHP 5.4.x trở lên
30719 nếu là PHP 5.3.x
6143 nếu là PHP 5.2.x
2047 nếu là các phiên bản PHP thấp hơn
 


WordPress
- Thay đổi một số giá trị trong file wp-config.php như sau:

/**  Bật WP_DEBUG mode */
define('WP_DEBUG', true);
/**  Bật chức năng lưu file log ở đường dẫn sau /wp-content/debug.log  */
define('WP_DEBUG_LOG', true);
/**  Hiển thị  các lỗi và warnings  */
define('WP_DEBUG_DISPLAY', true);
@ini_set('display_errors',1);
 
Magento
- Cấu hình trong phần quản lý: Admin >> Configuration >> Developer >> Log Settings >> Enabled = Yes
- Phân quyền 777 cho folder var/log để lưu log tại 2 file sau:
var/log/system.log
var/log/exception.log

– Khi sử dụng ngồn ngữ PHP để lập trình website (hoặc mã nguồn có sẵn) thì thường mã nguồn đó chỉ chạy tốt trên một môi trường PHP nhất định (phổ biến nhất là PHP 5.2, PHP 5.3), khi chạy trên môi trường Hosting có phiên bản PHP không phù hợp thì các hàm PHP trong mã nguồn website sẽ không còn được hỗ trợ và hiển thị một số lỗi dạng như sau:

Your server is running PHP version 5.1.6 but WordPress 3.8.2 requires at least 5.2.4.
Undefined variable: xxx in homeuserhostingpublic_htmlpath-to-fileabc.php on line 12
Fatal error: Call to undefined method xxx
Deprecated: Assigning the return value of new by reference is deprecated in xxx on line 136

– Ngoài ra tùy thuộc vào cấu hình của từng mã nguồn để kiểm tra file thông báo lỗi khác nếu có.

2. Cách khách phục

Việc đọc log sẽ giúp bạn rất nhiều trong việc xác định nguyên nhân và cách xử lý nhanh chóng, tuy nhiên với mỗi mã nguồn sẽ có những vấn đề khác nhau. Mắt Bão giới thiệu đến một số lỗi website phổ biến và cách xử lý như sau:

400 – Bad Request
Máy chủ web không thể phân tích cú pháp một tập lệnh bị định dạng sai. Thông thường, các vấn đề về lập trình sẽ gây ra sự cố này. Bạn cần trao đổi với nhà phát triển hoặc nhà cung cấp phần mềm để được hỗ trợ giải quyết sự cố này.

401 — Unauthorized
Trang này yêu cầu có tên người dùng và mật khẩu mới truy cập được. Nếu bạn tìm cách truy cập trang mà không có tên người dùng và mật khẩu, bạn sẽ nhận được thông báo 401 — Unauthorized.

403 — Forbidden
Lỗi bị cấm sẽ hiển thị khi ai đó tìm cách truy cập vào thư mục, tập tin hoặc tập lệnh mà không được cho phép.
Các tập tin chỉ mục không hợp lệ và các thư mục trống cũng có thể gây ra lỗi 403. Bạn cần kiểm tra lại dữ liệu bên trong thư mục và các phân quyền liên quan.

404 — Not Found
Nếu khách truy cập vào các URL không tồn tại, họ sẽ gặp lỗi 404. Nguyên nhân có thể là bất cứ thứ gì, từ URL không hợp lệ, tập tin bị thiếu hay chuyển hướng đến URL không còn tồn tại.

500 — Internal Server Error
Đây là lỗi rất thường gặp, cho biết đã xảy ra lỗi khi hiển thị website nhưng không có sẵn chi tiết. Tập tin .htaccess không hợp lệ hoặc quy tắc không hợp lệ trong đó, thường gây ra lỗi 500 với máy chủ Linux. Nếu là máy chủ Windows, bạn nên kiểm tra qua tập tin web.config.

Chúc bạn thành công!


20/05/2020


Thông tin tác giả


Bài viết liên quan