2014-04-14 20 views
8

Tôi đang đấu tranh một chút để nắm bắt khái niệm về chmod() từ PHP vì khóa học tôi hiện đang thực hiện hơi lỗi thời và liên quan đến safe_mode. Nó nói rằng khi safe_mode bị tắt, các hạn chế để sửa đổi quyền với chmod() thành tệp khi chủ sở hữu không giống với tệp thực thi lệnh được xóa. Tôi đang làm việc với PHP 5.5.9 trong liên kết với XAMPP, tôi đã xác minh rằng các lá cờ được tắt (chỉ trong trường hợp), nhưng dường như không thể làm cho nó hoạt động. Như tôi đã thực thi kịch bản PHP sau:PHP chmod(): Hoạt động không được phép, việc sử dụng safe_mode có liên quan?

echo "File permissions :" . decoct(fileperms("file_permissions.php")); 
chmod("file_permissions.php" ,0777); 

tôi nhận được kết quả như sau:

Warning: chmod(): Operation not permitted 

quyền của tôi cho các tập tin như sau

[email protected] 1 joelhernandez staff  24 Apr 14 06:59 file_permissions.php 

Và tôi đã thực hiện ps aux | grep httpd để xác nhận rằng máy chủ web của tôi đang hoạt động theo "daemon" của người dùng.

Như tôi đã thay đổi quyền sở hữu tập tin để daemon:

[email protected] 1 daemon staff  24 Apr 14 06:59 file_permissions.php 

Tất cả mọi thứ hoạt động, tôi không hiểu tại sao khi tôi đã hiểu rằng với safe_mode tắt, quyền sở hữu tập tin sẽ là vô nghĩa, thay vì cho phép file là cách để xử lý quyền truy cập.

Trả lời

13

Người dùng daemon không phải là root, do đó không được phép thay đổi chế độ của tệp do người dùng khác sở hữu. PHP safe_mode không phải là nguyên nhân ở đây. Cảnh báo cho bạn biết rằng thao tác đã thực hiện thất bại vì người dùng máy chủ web không được phép thực hiện thay đổi chế độ.

Thao tác đã thành công sau khi bạn đã thay đổi quyền sở hữu tệp thành công theo cách thủ công daemon vì người dùng được phép thay đổi chế độ tệp mà họ sở hữu.

+0

Được rồi, vậy tôi nên tiếp cận phương pháp nào? Không phải safe_mode bị tắt sẽ cho phép thay đổi quyền trong các tệp mà người dùng không sở hữu không? Ngoài ra, tôi tin rằng tôi đọc rằng chmod() không yêu cầu quyền người dùng siêu, chỉ chown() –

+4

'chmod' không phải lúc nào cũng yêu cầu root - người dùng có thể thay đổi chế độ tệp mà họ sở hữu -' joelhernandez' có thể thay đổi chế độ các tệp được sở hữu bởi 'joelhernandez' và' daemon' có thể thay đổi chế độ tệp được sở hữu bởi 'daemon'. Người dùng (ngoài root) không thể thay đổi chế độ tập tin mà họ không sở hữu - 'daemon' không thể thay đổi chế độ tập tin thuộc sở hữu của' joelhernandez'. –

+0

Đối với những gì bạn nên làm thay vào đó, thật khó để nói mà không biết thêm về những gì bạn đang cố gắng để thực hiện. –

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