Hướng dẫn chi tiết khắc phục lỗi WordPress DirectAdmin permissions – Từ A đến Z

wordpress directadmin permissions lỗi

Khi quản trị website WordPress trên nền tảng DirectAdmin, lỗi permissions (quyền truy cập file và thư mục) là một trong những vấn đề phổ biến nhất mà người dùng gặp phải. Lỗi này thường biểu hiện qua việc không thể tải ảnh lên thư viện, không cài được plugin, theme, hoặc website hiển thị lỗi trắng (white screen). Nguyên nhân cốt lõi nằm ở sự không tương thích giữa cơ chế phân quyền của DirectAdmin và cách WordPress vận hành. Bài viết này sẽ đi sâu vào bản chất lỗi WordPress DirectAdmin permissions, phân tích nguyên nhân, hậu quả và cung cấp hướng dẫn khắc phục chi tiết từng bước, giúp bạn giải quyết triệt để vấn đề.

Lỗi WordPress DirectAdmin permissions là gì?

wordpress directadmin permissions lỗi - Hình 2

Trong hệ thống hosting sử dụng DirectAdmin, mỗi tài khoản hosting đều có một user Linux riêng. Khi bạn cài đặt WordPress, các file và thư mục sẽ được tạo ra với quyền sở hữu (owner) thuộc về user đó. Tuy nhiên, các tiến trình PHP (thường chạy dưới user Apache, www-data, hoặc nobody) cần có quyền đọc và ghi lên các file này. Nếu quyền không được thiết lập đúng, WordPress sẽ không thể ghi dữ liệu vào hệ thống file, dẫn đến hàng loạt lỗi.

Cụ thể, lỗi WordPress DirectAdmin permissions xảy ra khi:

    • Quyền sở hữu (owner/group) không khớp giữa user hosting và user chạy PHP.
    • Giá trị CHMOD (permission bits) của file hoặc thư mục không đúng (ví dụ file không được set 644, thư mục không được set 755).
    • Cơ chế PHP handler (LSAPI, CGI, suPHP, FastCGI) ảnh hưởng đến luồng quyền.
    • File.htaccess bị hỏng hoặc không có quyền ghi.

    DirectAdmin sử dụng mô hình “User Ownership” mặc định: tất cả các file và thư mục của website đều thuộc về một user cụ thể (tên user trùng với tên tài khoản hosting). Tuy nhiên, khi PHP chạy ở chế độ mod_php (DSO) hoặc CGI/FastCGI không đúng cách, nó sẽ chạy dưới user khác (thường là apache hoặc nobody), làm mất quyền ghi.

    Các dấu hiệu nhận biết lỗi WordPress DirectAdmin permissions

  • Không thể cập nhật plugin hoặc theme từ admin dashboard.
  • Khi cài plugin mới, WordPress yêu cầu FTP hoặc SSH.
  • Lỗi “Unable to write to wp-config.php file” trong quá trình cài đặt.
  • Lỗi “White Screen of Death” hoặc “Internal Server Error”.
  • Không thể chỉnh sửa file theme trực tiếp trong Appearance – Theme File Editor.
  • Xuất hiện thông báo “Warning: is_writable(): Permission denied” trong debug.log.

Nguyên nhân sâu xa của lỗi WordPress DirectAdmin permissions

wordpress directadmin permissions lỗi - Hình 1

Sự khác biệt giữa owner và PHP handler

DirectAdmin hỗ trợ nhiều PHP handler: suPHP, FastCGI, LSAPI (LiteSpeed), PHP-FPM, và CGI. Mỗi handler có cách xử lý quyền khác nhau. Nếu bạn đang dùng suPHP, PHP sẽ chạy dưới user của tài khoản hosting, nên quyền thường không có vấn đề. Ngược lại, với DSO (mod_php) hoặc FastCGI không được cấu hình đúng, PHP chạy dưới user apache, dẫn đến xung đột owner.

Quyền CHMOD không đúng sau khi upload

Nhiều người dùng upload WordPress lên server qua FTP với CHMOD mặc định thư mục là 755 và file là 644. Nhưng khi cài đặt hoặc cập nhật, WordPress cần ghi thêm file tạm, cache, hoặc cập nhật.htaccess. Nếu thư mục wp-content có quyền 755 nhưng owner là user A, trong khi PHP chạy dưới user B, hệ điều hành sẽ từ chối ghi.

File.htaccess không thể ghi

DirectAdmin thường tạo file.htaccess mặc định với quyền 644 và chủ sở hữu là user. Nếu quá trình rewrite rule yêu cầu ghi vào.htaccess (khi bạn bật permalink), lỗi permissions xuất hiện ngay lập tức.

Ảnh hưởng của suExec và suPHP

DirectAdmin hỗ trợ suExec – cho phép script CGI chạy với quyền của user sở hữu. Tuy nhiên, nếu suExec không được kích hoạt hoặc bị lỗi cấu hình, PHP sẽ không thể thực thi với user đúng, gây ra lỗi permissions.

PHP Handler Cách hoạt động về quyền Mức độ rủi ro lỗi permissions
suPHP PHP chạy với user của tài khoản hosting Thấp (thường an toàn)
PHP-FPM PHP chạy với user pool riêng, có thể cấu hình Trung bình (cần cấu hình đúng)
LSAPI PHP chạy với user LiteSpeed, thường mapping với user Trung bình
FastCGI (mod_fcgid) PHP chạy với user hosting nếu cấu đúng, nếu không chạy dưới nobody Cao
DSO (mod_php) PHP chạy dưới user Apache (www-data) Rất cao

Hướng dẫn khắc phục lỗi WordPress DirectAdmin permissions chi tiết

Để sửa lỗi, bạn cần thực hiện theo các bước từ đơn giản đến phức tạp. Ưu tiên dùng SSH hoặc File Manager của DirectAdmin.

Bước 1: Kiểm tra PHP handler hiện tại

Đăng nhập DirectAdmin – chọn tên miền – vào Domain Setup. Tại mục PHP Version Selector, xem PHP Handler đang là gì. Nếu là DSO (mod_php) hoặc FastCGI không rõ ràng, hãy chuyển sang suPHP hoặc PHP-FPM (nếu có) để giảm ngay xung đột owner. Cách đổi: chọn PHP version, sau đó chọn handler suPHP hoặc LSAPI, nhấn Save.

Bước 2: Reset quyền CHMOD về mặc định

Dùng lệnh sau trên SSH (thay /home/username/domains/domain.com/public_html bằng đường dẫn thực tế):

find /home/username/domains/domain.com/public_html -type d -exec chmod 755 {} ;
find /home/username/domains/domain.com/public_html -type f -exec chmod 644 {} ;
chmod 755 /home/username/domains/domain.com/public_html/wp-content
chmod 755 /home/username/domains/domain.com/public_html/wp-content/themes
chmod 755 /home/username/domains/domain.com/public_html/wp-content/plugins
chmod 755 /home/username/domains/domain.com/public_html/wp-content/uploads

Nếu không có SSH, dùng File Manager của DirectAdmin: vào public_html, chọn tất cả thư mục và file, chọn Permission, set thư mục: 755, file: 644.

Bước 3: Đảm bảo owner đúng

Kiểm tra owner của toàn bộ thư mục public_html. Owner phải là username của tài khoản hosting. Lệnh kiểm tra:
ls -l /home/username/domains/domain.com/public_html

Nếu owner không đúng (ví dụ root), bạn cần chạy lệnh:
chown -R username:username /home/username/domains/domain.com/public_html

Trong DirectAdmin,

CHMOD 777 chỉ cấp quyền ghi dựa trên owner/group/others, nhưng nếu owner và user chạy PHP khác nhau, hệ điều hành vẫn có thể từ chối. Bạn cần đảm bảo owner đúng và PHP handler chạy dưới user phù hợp. Ngoài ra, DirectAdmin có thể có cấu hình suExec yêu cầu file thuộc đúng user mới cho phép ghi.

Lỗi WordPress DirectAdmin permissions có gây mất dữ liệu không?

Thông thường lỗi này chỉ ảnh hưởng đến khả năng ghi, không làm mất dữ liệu hiện có. Tuy nhiên, nếu bạn cố gắng sửa bằng cách set CHMOD 777 hàng loạt hoặc xóa nhầm file.htaccess, có thể gây mất chức năng website. Luôn backup trước khi thao tác.

Có nên dùng plugin nào để tự động sửa permissions không?

Có một số plugin như “WordPress File Permissions” hoặc “Fix Another Permissions” nhưng chúng thường không hiệu quả trên DirectAdmin vì không can thiệp được vào owner ở cấp hệ thống. Cách thủ công vẫn an toàn và triệt để hơn.

Lỗi permissions có liên quan đến PHP version không?

Không trực tiếp. PHP version không gây lỗi permissions, nhưng nếu bạn chuyển đổi PHP version, handler cũng có thể bị thay đổi (ví dụ từ suPHP sang FastCGI). Lỗi permissions chỉ liên quan đến handler và cấu hình của nó.

Làm thế nào để kiểm tra PHP handler hiện tại?

Trong DirectAdmin: vào Account Manager – chọn tên miền – Domain Setup – PHP Version Selector. Tại đó sẽ hiển thị loại handler. Bạn cũng có thể xem trong file /usr/local/directadmin/data/users/username/php/version hoặc dùng lệnh: php -i | grep “Server API” nếu có SSH.

Kết luận

Lỗi WordPress DirectAdmin permissions tuy phổ biến nhưng hoàn toàn có thể khắc phục triệt để nếu bạn hiểu đúng bản chất. Quan trọng nhất là xác định chính xác PHP handler, đảm bảo owner của toàn bộ file và thư mục thuộc về user tài khoản hosting, và set CHMOD chuẩn 644/755. Tránh tư tưởng “777 cho nhanh” vì điều đó sẽ gây nguy hiểm cho bảo mật website. Với hướng dẫn chi tiết từng bước trong bài viết này, bạn có thể tự mình xử lý lỗi mà không cần đến chuyên gia. Nếu vẫn gặp khó khăn, hãy liên hệ nhà cung cấp hosting DirectAdmin của bạn để được hỗ trợ thêm.

Bài viết cùng chủ đề:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *