Lỗi 500 Internal Server Error là một trong những lỗi nghiêm trọng và phổ biến nhất trên WordPress. Khi xảy ra lỗi này, website sẽ không hiển thị nội dung mà chỉ xuất hiện thông báo “500 Internal Server Error” hoặc trắng trang.
Về cơ bản cách xử lý lỗi này cũng khá tương đồng với lỗi trắng trang. Các bạn có thể xem thêm tại đây
1. Hướng dẫn Fix lỗi 500 Internal Server Error WordPress?
* Cách 1: Bật debug để xem lỗi?
Đầu tiên ta mở file wp-config.php (nằm ở thư mục gốc). Tìm dòng define( ‘WP_DEBUG’, false ); và thay thế (hoặc thêm vào nếu chưa có) đoạn code sau:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
– Tải lại trang web để lỗi 500 xảy ra lần nữa.
– Vào thư mục /wp-content/, bạn sẽ thấy file Debug.log. Mở file này lên và kéo xuống cuối cùng.
Ví dụ nó báo: Fatal error: … in /wp-content/plugins/seo-plugin/… -> Bạn biết ngay do plugin SEO gây lỗi.
Tiếp theo ta Kiểm tra file .htaccess (Nguyên nhân phổ biến #1):
– File .htaccess điều khiển đường dẫn của website. Nếu file này bị lỗi cú pháp, toàn bộ web sẽ sập (Lỗi 500).
– Trong thư mục gốc website, tìm file .htaccess.
– Đổi tên nó thành .htaccess_old (để vô hiệu hóa nó).
– Tải lại trang web.
- Nếu web chạy lại bình thường: Lỗi do file
.htaccess. Bạn hãy vào Admin Dashboard -> Settings -> Permalinks (Đường dẫn tĩnh) -> Bấm Save Changes để WordPress tự tạo lại file mới chuẩn. - Nếu vẫn lỗi 500: Chuyển sang Bước 3.
– Tiếp theo tăng giới hạn bộ nhớ (PHP Memory Limit)
Đôi khi Web bị hết RAM khi tải (đặc biệt nếu dùng WooCommerce hoặc Elementor), server sẽ ngắt kết nối và báo lỗi 500.
- Mở file wp-config.php.
- Thêm dòng này vào trước dòng /* That’s all, stop editing! */:
define( ‘WP_MEMORY_LIMIT’, ‘256M’ );
Lưu lại và kiểm tra.
* Cách 2: Sử dụng Tool công cụ?
Mình có viết một công cụ – tác dụng của nó là kiểm tra cơ bản các lỗi thường xuyên gây ra lỗi 500 Internal Server Error WordPress. Cách làm như sau:
Các bạn vào thư mục gốc website của bạn: (ví dụ: /var/www/domain.com/public_html)
Ví dụ:
nano wp-fix-500.sh
Cấp quyền chạy script:
chmod +x wp-fix-500.sh
Chạy script:
Bạn hãy tạo một file tên là wp-fix-500.sh, dán nội dung dưới đây vào:
#!/bin/bash
# Màu sắc cho dễ nhìn
RED=’\033[0;31m’
GREEN=’\033[0;32m’
YELLOW=’\033[1;33m’
NC=’\033[0m’ # No Colorecho -e “${YELLOW}======================================================${NC}”
echo -e “${YELLOW} WORDPRESS 500 ERROR FIXER – AUTOMATION SCRIPT ${NC}”
echo -e “${YELLOW}======================================================${NC}”# 1. Xác định thư mục hiện tại
CURRENT_DIR=$(pwd)
if [ ! -f “$CURRENT_DIR/wp-config.php” ]; then
echo -e “${RED}[LỖI] Không tìm thấy file wp-config.php!${NC}”
echo “Vui lòng chạy script này ngay tại thư mục gốc (root) của website WordPress.”
exit 1
fiecho -e “Thư mục làm việc: ${GREEN}$CURRENT_DIR${NC}”
echo “”# — CHỨC NĂNG 1: FIX PHÂN QUYỀN (PERMISSIONS) —
read -p “1. Bạn có muốn Fix quyền truy cập (File 644 / Folder 755) không? [y/n]: ” run_perm
if [[ “$run_perm” == “y” ]]; then
echo -e “${YELLOW}Dang xu ly phan quyen… (Vui long cho)${NC}”
# Folder -> 755
find . -type d -exec chmod 755 {} \;
# File -> 644
find . -type f -exec chmod 644 {} \;
# wp-config.php -> 640 (Bao mat hon)
chmod 640 wp-config.php
echo -e “${GREEN}[DONE] Da reset phan quyen xong.${NC}”
else
echo “Skipped.”
fiecho “——————————————————“
# — CHỨC NĂNG 2: RESET FILE .HTACCESS —
read -p “2. Bạn có muốn Reset file .htaccess về mặc định không? (File cũ sẽ được backup) [y/n]: ” run_htaccess
if [[ “$run_htaccess” == “y” ]]; then
if [ -f “.htaccess” ]; then
mv .htaccess .htaccess.backup_$(date +%F_%T)
echo -e “${YELLOW}Da backup file .htaccess cu.${NC}”
fi# Tao file .htaccess mac dinh cua WordPress
cat > .htaccess <<EOF
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
EOFchmod 644 .htaccess
echo -e “${GREEN}[DONE] Da tao file .htaccess moi.${NC}”
else
echo “Skipped.”
fiecho “——————————————————“
# — CHỨC NĂNG 3: BẬT CHẾ ĐỘ DEBUG —
read -p “3. Bạn có muốn bật WP_DEBUG để xem lỗi cụ thể không? [y/n]: ” run_debug
if [[ “$run_debug” == “y” ]]; then
# Backup wp-config
cp wp-config.php wp-config.php.bak
# Kiem tra xem da co WP_DEBUG chua
if grep -q “WP_DEBUG” wp-config.php; then
# Neu co roi thi replace false thanh true
sed -i “s/define( ‘WP_DEBUG’, false );/define( ‘WP_DEBUG’, true );/” wp-config.php
sed -i “s/define(‘WP_DEBUG’, false);/define(‘WP_DEBUG’, true);/” wp-config.php
else
# Neu chua co thi them vao dau file (sau <?php)
sed -i “1a define( ‘WP_DEBUG’, true );” wp-config.php
fi
# Them log va tat hien thi ra man hinh
if ! grep -q “WP_DEBUG_LOG” wp-config.php; then
sed -i “/define( ‘WP_DEBUG’, true );/a define( ‘WP_DEBUG_LOG’, true );\ndefine( ‘WP_DEBUG_DISPLAY’, false );” wp-config.php
fiecho -e “${GREEN}[DONE] Da bat Debug. Hay tai lai web va kiem tra file /wp-content/debug.log${NC}”
else
echo “Skipped.”
fiecho “——————————————————“
# — CHỨC NĂNG 4: TĂNG MEMORY LIMIT —
read -p “4. Bạn có muốn tăng WP_MEMORY_LIMIT lên 256M không? [y/n]: ” run_mem
if [[ “$run_mem” == “y” ]]; then
if grep -q “WP_MEMORY_LIMIT” wp-config.php; then
echo -e “${YELLOW}Cau hinh Memory Limit da ton tai. Vui long sua thu cong.${NC}”
else
# Them vao truoc dong ‘That’s all, stop editing’
sed -i “/\/\* That’s all, stop editing! \*\//i define( ‘WP_MEMORY_LIMIT’, ‘256M’ );” wp-config.php
echo -e “${GREEN}[DONE] Da them memory limit 256M.${NC}”
fi
else
echo “Skipped.”
fiecho “——————————————————“
echo -e “${YELLOW}HOAN TAT! Vui long kiem tra lai website.${NC}”

























