Khi xây dựng hệ thống cache ảnh / thumbnail (ví dụ blog.cache_media, blog.cache_thumb), một lỗi rất hay gặp là:
❌ PHP không ghi được file
❌ LỗiPermission denied
❌ Cron chạy được nhưng web thì không (hoặc ngược lại)
Nguyên nhân gần như luôn nằm ở quyền thư mục.
Bài viết này hướng dẫn copy toàn bộ quyền từ một folder cache đã hoạt động ổn định sang folder cache mới đúng cách – an toàn – chuẩn production.
Giả sử bạn đã có folder cache đang chạy tốt:
/var/www/blog.cache_media
Folder này đã:
www-data ghi fileBạn tạo thêm folder mới để cache thumbnail:
/var/www/blog.cache_thumb
👉 Thay vì đoán quyền (chmod 777 bừa bãi), copy y nguyên quyền từ folder cũ là cách chuẩn và an toàn nhất.
chown – Change Ownerwww-data:www-datachmod – Change Moderwx)775📌 Muốn ghi file → cần đúng owner + đúng permission
chown -R --reference=/var/www/blog.cache_media /var/www/blog.cache_thumb chmod -R --reference=/var/www/blog.cache_media /var/www/blog.cache_thumb
👉 Lệnh trên sẽ:
-R (đệ quy) không?-R nếu:👉 Nhưng trong thực tế cache luôn sinh file, nên dùng -R là an toàn nhất.
chown -R --reference=/var/www/blog.cache_media /var/www/blog.cache_thumb \ && chmod -R --reference=/var/www/blog.cache_media /var/www/blog.cache_thumb
📌 Rất phù hợp khi:
ls -ld /var/www/blog.cache_media ls -ld /var/www/blog.cache_thumb
Ví dụ output đúng:
drwxrwxr-x www-data www-data blog.cache_media drwxrwxr-x www-data www-data blog.cache_thumb
👉 Nếu giống nhau → OK tuyệt đối.
setgid để file mới kế thừa groupchmod g+s /var/www/blog.cache_thumb
Lợi ích:
❌ Chỉ chmod 777 nhưng owner vẫn là root
❌ Chỉ chown mà permission không cho ghi
❌ Chỉnh quyền folder cha nhưng quên file con
❌ Không dùng -R với cache đã có dữ liệu
chown → quyết định ai sở hữuchmod → quyết định được làm gì--reference → chuẩn, nhanh, không sai-R)👉 Đây là cách an toàn nhất để tạo thêm cache folder mà không phát sinh lỗi Permission trong production.