2009-08-06 22 views
19

Tôi đang sử dụng file_put_contents để tạo tệp. Quá trình php của tôi đang chạy trong một nhóm có quyền ghi vào thư mục. Tuy nhiên, khi file_put_contents được gọi, tệp kết quả không có quyền ghi nhóm (nó chỉ tạo lần đầu tiên). Điều này có nghĩa rằng nếu tôi cố gắng ghi đè lên tập tin nó không thành công vì thiếu quyền.làm cách nào để tạo tệp có file_put_contents có quyền ghi nhóm?

Có cách nào để tạo tệp có quyền ghi nhóm không?

Trả lời

21

Bạn có thể thử cài đặt số umask trước khi gọi file_put_contents: nó sẽ thay đổi quyền mặc định sẽ được cấp cho tệp khi được tạo.

Cách khác (tốt hơn, theo tài liệu) là sử dụng chmod để thay đổi quyền, ngay sau khi tệp đã được tạo.


Vâng, sau khi đọc lại câu hỏi, tôi hy vọng tôi hiểu nó cũng ...

2

Để mở tệp và ghi nội dung, bạn cần có quyền ghi vào tệp. Điều quan trọng là phải hiểu sự khác biệt. Để ghi đè toàn bộ tệp, bạn thực sự cần quyền ghi vào thư mục .

Sử dụng chmod() để đặt nội dung phù hợp trên tệp và/hoặc thư mục nếu bạn muốn rõ ràng về nó.

+0

Hmm ... Tôi có quyền truy cập vào thư mục, vấn đề là tôi muốn gọi file_put_contents nhiều lần từ các tập lệnh khác nhau trên cùng một tệp, nhưng các lần liên tiếp không thành công. –

21

Ví dụ 1 (tập tin cài đặt-quyền read-write cho chủ sở hữu và nhóm, và đọc cho người khác):

file_put_contents($filename, $data); 
chmod($filename, 0664); 

Ví dụ 2 (tạo tập tin ghi theo nhóm mà không thay đổi điều khoản khác):

file_put_contents($filename, $data); 
chmod($filename, fileperms($filename) | 16); 

Ví dụ 3 (tạo tập tin ghi bởi tất cả mọi người mà không thay đổi điều khoản khác):

file_put_contents($filename, $data); 
chmod($filename, fileperms($filename) | 128 + 16 + 2); 

128, 16, 2 là cho phép ghi cho chủ sở hữu, nhóm và khác tương ứng.

Các vấn đề liên quan