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ì?

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.
- 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.
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
Nguyên nhân sâu xa của lỗi WordPress DirectAdmin permissions

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.
- Khắc phục toàn bộ lỗi WordPress Database Migration: Hướng dẫn chi tiết từ A-Z
- Woocommerce Analytics Sync Lỗi: Nguyên Nhân, Cách Khắc Phục và Phòng Tránh Toàn Diện
- Elementor Recovery Mode: Khắc phục lỗi WordPress và đưa website trở lại hoạt động
- Elementor Popup Responsive Lỗi: Nguyên Nhân và Cách Khắc Phục Triệt Để
- Hướng dẫn chi tiết cách xóa bài viết WordPress nhanh chóng và triệt để














