Sửa Lỗi 500 Internal Server Error trên DirectAdmin
Giới Thiệu
Lỗi 500 Internal Server Error là một trong những lỗi phổ biến và khó chịu nhất mà bạn có thể gặp phải khi quản lý website. Nó cho biết có điều gì đó không ổn trên máy chủ web, nhưng không chỉ rõ nguyên nhân cụ thể, khiến việc chẩn đoán trở nên khó khăn. Trên DirectAdmin, lỗi này thường xuất phát từ các vấn đ liên quan đến cấu hình PHP, quyền truy cập file, hoặc lỗi trong file .htaccess. Bài viết này sẽ hướng dẫn bạn từng bước để xác định và khắc phục lỗi 500, giúp website của bạn hoạt động trở lại.
📋 Thời gian: 15-30 phút | Độ khó: Trung bình
Yêu Cầu
Để thực hiện theo hướng dẫn này, bạn cần có:
- Quyền truy cập vào bảng điều khiển DirectAdmin (ở cấp độ người dùng, reseller hoặc admin).
- Quyền truy cập SSH vào máy chủ (rất khuyến khích để kiểm tra log và sửa lỗi hiệu quả hơn, nhưng không bắt buộc cho tất cả các bước).
- Kiến thức cơ bản về cấu trúc file và thư mục của website.
Các Bước Thực Hiện
Bước 1: Kiểm Tra Log Lỗi (Error Logs)
Bước đầu tiên và quan trọng nhất khi gặp lỗi 500 là kiểm tra các file log lỗi của máy chủ. Các file này thường chứa thông tin chi tiết về nguyên nhân gây ra lỗi.
Cách thực hiện qua DirectAdmin:
- Đăng nhập vào DirectAdmin.
- Chuyển đến cấp độ người dùng (User Level) nếu bạn đang ở cấp độ admin/reseller.
- Tìm và nhấp vào mục Site Summary / Statistics / Logs.
- Tại đây, bạn sẽ thấy các file log, bao gồm cả Error Logs. Mở file này để xem các lỗi gần đây.
Cách thực hiện qua SSH (khuyến nghị):
Truy cập SSH vào máy chủ của bạn và sử dụng lệnh tail để xem các dòng lỗi mới nhất.
# Di chuyển đến thư mục log của Apache (phổ biến)
cd /var/log/httpd/domains/
# Hoặc Nginx nếu server dùng Nginx làm reverse proxy
# cd /var/log/nginx/domains/
# Xem log lỗi của domain cụ thể của bạn (thay 'yourdomain.com' bằng tên miền của bạn)
# Đối với Apache:
tail -f yourdomain.com.error.log
# Đối với Nginx (nếu có):
# tail -f yourdomain.com.error.log
# Nếu bạn đang dùng PHP-FPM, bạn cũng có thể kiểm tra log của PHP-FPM
# tail -f /var/log/php-fpm/www-error.log
# (Đường dẫn này có thể khác tùy cấu hình, đôi khi nằm trong thư mục user hoặc domain cụ thể)
💡 Mẹo: Đọc kỹ các thông báo lỗi. Chúng thường chỉ ra file nào gây lỗi và loại lỗi là gì (ví dụ: lỗi cú pháp PHP, quyền không đúng, lỗi .htaccess).
Bước 2: Kiểm Tra Quyền File và Thư Mục (Permissions)
Quyền truy cập file và thư mục không chính xác là một nguyên nhân rất phổ biến gây ra lỗi 500. Các web server thường yêu cầu quyền cụ thể để đọc và thực thi các file.
- Quyền chuẩn:
- Thư mục:
755(rwxr-xr-x) - File:
644(rw-r--r--)
- Thư mục:
Cách thực hiện qua DirectAdmin File Manager:
- Đăng nhập vào DirectAdmin, chuyển đến cấp độ người dùng.
- Vào File Manager.
- Điều hướng đến thư mục
public_htmlcủa website bạn. - Chọn các file và thư mục, sau đó nhấp chuột phải (hoặc tìm tùy chọn "Change Permissions") để đặt lại quyền.
Cách thực hiện qua SSH (khuyến nghị):
# Di chuyển vào thư mục gốc của website (thường là public_html)
cd /home/user/domains/yourdomain.com/public_html
# Đặt quyền 755 cho tất cả thư mục con
find . -type d -exec chmod 755 {} \;
# Đặt quyền 644 cho tất cả file
find . -type f -exec chmod 644 {} \;
# ✅ Sau khi đặt lại quyền, kiểm tra lại website của bạn.
⚠️ Cảnh báo: Tuyệt đối không đặt quyền 777 cho bất kỳ file hoặc thư mục nào, trừ khi bạn hiểu rõ rủi ro bảo mật và chỉ làm điều đó trong thời gian cực ngắn để gỡ lỗi, sau đó phải khôi phục lại quyền an toàn.
Bước 3: Kiểm Tra File .htaccess
File .htaccess là một file cấu hình mạnh mẽ nhưng cũng rất dễ gây lỗi nếu có cú pháp sai hoặc chứa các lệnh không tương thích với cấu hình máy chủ.
Cách thực hiện:
-
Vô hiệu hóa tạm thời: Sử dụng File Manager của DirectAdmin hoặc SSH để đổi tên file
.htaccessthành một tên khác, ví dụ:.htaccess_old.# Trong thư mục public_html
mv .htaccess .htaccess_old -
Tải lại website của bạn.
- Nếu website hoạt động trở lại, lỗi 500 chính là do file
.htaccess. - Nếu lỗi vẫn còn, đổi tên file
.htaccess_oldtrở lại thành.htaccessvà chuyển sang bước tiếp theo.
- Nếu website hoạt động trở lại, lỗi 500 chính là do file
-
Sửa lỗi
.htaccess:- Kiểm tra các dòng lệnh gần đây bạn đã thêm vào file.
- Đảm bảo không có lỗi cú pháp.
- Nếu bạn đang sử dụng WordPress, hãy thử khôi phục file
.htaccessmặc định của WordPress. - Kiểm tra các quy tắc
RewriteRulehoặc các lệnhphp_valuecó thể gây xung đột.
Bước 4: Kiểm Tra Phiên Bản và Cú Pháp PHP
Lỗi 500 cũng có thể do website của bạn đang chạy một phiên bản PHP không tương thích hoặc có lỗi cú pháp trong mã PHP.
Kiểm tra phiên bản PHP:
- Đăng nhập DirectAdmin, chuyển đến cấp độ người dùng.
- Vào Domain Setup, chọn domain của bạn.
- Tìm mục PHP Version Selector.
- Thử chuyển đổi phiên bản PHP sang một phiên bản khác (ví dụ: nếu đang dùng PHP 8.x, thử chuyển về PHP 7.x, hoặc ngược lại).
- Lưu thay đổi và kiểm tra lại website.
Kiểm tra cú pháp PHP:
- Nếu log lỗi (ở Bước 1) chỉ ra lỗi cú pháp PHP (ví dụ: "Parse error", "Syntax error"), bạn cần chỉnh sửa file PHP bị lỗi.
- Nếu bạn vừa upload một plugin/theme mới hoặc cập nhật mã nguồn, hãy thử vô hiệu hóa/gỡ bỏ chúng để xác định nguyên nhân.
Bước 5: Kiểm Tra Giới Hạn Tài Nguyên PHP
Đôi khi, lỗi 500 xảy ra khi một script PHP vượt quá giới hạn tài nguyên được cấp phát (ví dụ: memory_limit, max_execution_time).
Cách điều chỉnh trong DirectAdmin:
- Đăng nhập DirectAdmin, chuyển đến cấp độ người dùng.
- Vào Select PHP Version (thường nằm trong mục "Extra Features" hoặc "Advanced Features").
- Nhấp vào mục Options.
- Tại đây, bạn có thể điều chỉnh các giá trị như
memory_limit,max_execution_time,upload_max_filesize... - Thử tăng các gi trị này lên một chút (ví dụ:
memory_limittừ 128M lên 256M hoặc 512M) và kiểm tra lại. - Lưu thay đổi và kiểm tra website.
Troubleshooting
-
Lỗi vẫn còn sau khi thử tất cả các bước?
- Quay lại Bước 1 và kiểm tra lại log lỗi thật cẩn thận. Đôi khi có nhiều lỗi xảy ra cùng lúc, hoặc bạn đã bỏ sót một chi tiết quan trọng.
- Nếu bạn có quyền root/admin, hãy thử khởi động lại các dịch vụ web server (Apache/Nginx) và PHP-FPM.
# Khởi động lại Apache
systemctl restart httpd
# Khởi động lại Nginx (nếu dùng)
systemctl restart nginx
# Khởi động lại PHP-FPM (thường là php-fpm hoặc php-fpmX.Y)
systemctl restart php-fpm
# Hoặc cụ thể hơn: systemctl restart php-fpm74.service - Liên hệ với nhà cung cấp hosting của bạn. Cung cấp cho họ thông tin chi tiết về các bước bạn đã thực hiện và các thông báo lỗi từ log.
-
Không thể truy cập SSH?
- Bạn sẽ phải dựa hoàn toàn vào File Manager và các tùy chọn trong giao diện DirectAdmin.
- Nếu log lỗi không đủ thông tin, bạn sẽ cần liên hệ nhà cung cóp hosting để họ kiểm tra log server cho bạn.
Kết Luận
Lỗi 500 Internal Server Error có thể gây hoang mang, nhưng với phương pháp tiếp cận có hệ thống, bạn hoàn toàn có thể tìm ra nguyên nhân và khắc phục. Luôn bắt đầu bằng việc kiểm tra log lỗi, sau đó xem xét các nguyên nhân phổ biến như quyền file, file .htaccess, và cấu hình PHP.
💡 Best practices:
- Sao lưu định kỳ: Luôn có bản sao lưu đầy đủ của website và cơ sở dữ liệu trước khi thực hiện bất kỳ thay đổi lớn nào.
- Kiểm tra log thường xuyên: Đừng đợi đến khi website gặp lỗi mới kiểm tra log.
- Cập nhật phần mềm: Đảm bảo CMS, plugin, theme và phiên bản PHP của bạn luôn được cập nhật để tránh các lỗ hổng bảo mật và sự không tương thích.
Chúc bạn thành công trong việc sửa lỗi! ✅
Xem thêm: