Bạn đang gặp rắc rối với Drush khi nó không thể ghi vào thư mục /tmp trên hệ thống của bạn? Đây là một vấn đề phổ biến đối với các nhà phát triển Drupal, đặc biệt là khi làm việc với các môi trường server khác nhau. Bài viết này sẽ cung cấp cho bạn các nguyên nhân có thể gây ra lỗi này và các giải pháp từng bước để khắc phục nó. Đảm bảo bạn có thể tiếp tục công việc phát triển của mình một cách trơn tru nhất.
Có một vài lý do chính khiến Drush có thể gặp khó khăn khi ghi vào thư mục /tmp. Việc xác định đúng nguyên nhân là chìa khóa để tìm ra giải pháp phù hợp.
Dưới đây là các bước bạn có thể thực hiện để giải quyết vấn đề này, từ đơn giản đến phức tạp hơn.
Đầu tiên, hãy đảm bảo rằng user của bạn có quyền ghi vào thư mục /tmp. Sử dụng lệnh sau để kiểm tra:
ls -ld /tmp
Kết quả trả về sẽ cho bạn biết quyền truy cập hiện tại. Nếu user của bạn không có quyền ghi (ký hiệu 'w' không có trong phần quyền của user), hãy sử dụng lệnh sau để cấp quyền:
sudo chmod a+w /tmp
Lệnh này cấp quyền ghi cho tất cả mọi người (user, group, others) vào thư mục /tmp. Đây là một giải pháp nhanh chóng, nhưng cần cân nhắc về mặt bảo mật.
Truy cập trang quản trị Drupal của bạn (thường là `yourdomain.com/admin`) và điều hướng đến `admin/config/media/file-system`. Kiểm tra xem đường dẫn thư mục tạm thời (Temporary directory) có đúng là /tmp không. Nếu không, hãy sửa lại cho đúng.
Drush cũng có thể có cấu hình riêng về đường dẫn tạm thời. Tạo hoặc chỉnh sửa file `drushrc.php` (thường nằm trong thư mục `~/.drush`) và thêm dòng sau:
$options['tmp-dir'] = '/tmp';
Lưu ý: Bạn có thể cần tạo file `drushrc.php` nếu nó chưa tồn tại.
Nếu bạn nghi ngờ PrivateTmp là nguyên nhân, bạn có thể tắt nó (cần quyền root):
sudo systemctl edit --full php7.3-fpm # Thay php7.3-fpm bằng phiên bản PHP-FPM của bạn
Tìm dòng `PrivateTmp=true` và sửa thành `PrivateTmp=false`. Lưu file và khởi động lại PHP-FPM:
sudo systemctl restart php7.3-fpm # Thay php7.3-fpm bằng phiên bản PHP-FPM của bạn
**Cảnh báo:** Việc tắt PrivateTmp có thể ảnh hưởng đến bảo mật hệ thống. Hãy cân nhắc kỹ trước khi thực hiện.
Nếu bạn đang sử dụng SELinux hoặc AppArmor, hãy kiểm tra xem chúng có đang chặn Drush truy cập vào /tmp không. Bạn có thể cần phải tạo các rule tùy chỉnh để cho phép truy cập.
Lỗi Drush không thể ghi vào /tmp có thể gây khó chịu, nhưng với các bước trên, bạn hoàn toàn có thể xác định và giải quyết vấn đề. Hãy bắt đầu với các bước đơn giản nhất và tiến dần đến các giải pháp phức tạp hơn nếu cần thiết. Chúc bạn thành công!
Bài viết liên quan