2011-12-28 25 views
9

Tôi đang tạo một tệp mới bằng fopen.fopen Tạo tệp nhưng cách thay đổi quyền?

$filename = 'user_data/10.xml'; 
$openhandle = fopen($filename, 'w+'); 

Sau đó, tôi kiểm tra xem tệp đã được tạo bằng chức năng: file_exists().

Sự cố là: Tệp đang được tạo với một số chủ sở hữu, có thể là tên thư mục nhưng không phải là tên của tôi. Đồng thời, quyền của tệp chỉ là readable by the owner. Và vì tôi không phải là chủ sở hữu, tôi không thể đọc tệp hoặc thay đổi quyền.

Nhưng nếu cố gắng thay đổi nó bằng cách sử:

chown($filename, 'myusername'); 
chmod($filename, 777); 

tôi đã cố gắng thay đổi chủ sở hữu tập tin và quyền sử dụng Dòng lệnh sử dụng sudo. Điều đó làm việc đúng cách. Vì vậy, tôi cũng đã thử sử dụng các chức năng ở trên với shell_exec() để nó chạy trong thư mục gốc.

Nhưng không có may mắn.

Mặc dù, tôi không có nhiều kinh nghiệm với số lượng tệp cho phép, lệnh chown cũng không hoạt động.

Vậy làm cách nào để thay đổi chủ sở hữu và quyền của tệp để tôi là chủ sở hữu và có thể đọc và ghi được bằng các tập lệnh PHP khác của tôi?

+0

Khi tệp được tải lên (trước bất kỳ chmod nào), các quyền trên tệp là gì, các quyền trên thư mục user_data là gì và chủ sở hữu được chỉ định là ai? –

+0

Tôi tạo một tệp trống mới, và sau đó ghi vào nó bằng cách sử dụng hàm fwrite(). Các quyền trên tệp là: Chủ sở hữu và Nhóm: www-data Chủ sở hữu: đọc Nhóm: thực thi Khác: thực thi Trên thư mục user_data, tôi là chủ sở hữu và cả ba người được đặt thành Đọc, Viết , Execute ... –

+0

Như TimWickstrong nói, bạn nên thêm lệnh 0 vào lệnh chmod hàng đầu, nhưng cũng có thể bạn không được phép chmod. Hãy thử $ chmoded = chmod ($ filename, 0777); nếu (! $ chmoded) {echo "Không thể thay đổi quyền truy cập tệp";} ... cũng vậy, nếu quyền đối với tệp là 777 thì không cần phải gọi. –

Trả lời

17

Bạn sẽ có thể chmod nó chỉ sử dụng các dòng sau:

chmod($filename, 0777); 

Note 0 trước 777.

Cũng không làm thay đổi quyền sở hữu trước khi nó đã được chmod'ed

+0

Thông tin thêm có thể tìm thấy tại đây: http://php.net/manual/en/function.chmod.php –

+0

ok, điều này làm việc hoàn hảo ... cảm ơn rất nhiều ...: D –

+1

Không sao cả! Mừng vì tôi có thể giúp! –

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