2010-02-07 34 views
6

Đã được kéo ra khỏi mái tóc của tôi trong 2 giờ qua về điều này và chắc chắn tôi đang làm một cái gì đó thực sự ngu ngốc.mkdir không hoạt động trong PHP

<?php 
mkdir("blah", 0777); 
?> 

Điều này hoạt động thông qua dòng lệnh và thư mục được tạo. Nhưng điều tương tự cũng không hiệu quả khi tôi cố gắng chạy nó thông qua trình duyệt. Bất kỳ sự cố cấp quyền tệp nào?

+0

tôi đã bị kẹt với điều này trong một thời gian dài, hth người khác. nếu bạn đang ở trên SELinux, có thêm một lớp quyền gọi là "Security Context" mà bạn có thể thấy với 'ls -alZ'. sử dụng một cái gì đó như 'chcon system_u: object_r: httpd_sys_content_t: s0 public_HTML' – changokun

Trả lời

11

Có thể điều đó có thể xảy ra khi chạy dưới dòng lệnh, tập lệnh thừa hưởng quyền của bạn, nhưng khi chạy từ trình duyệt thì không?

Trong trường hợp đó, bạn sẽ muốn làm cho quyền thư mục của mình 'ghi' cho nhóm.

+4

Haha! 10.000 danh tiếng! Huzzah! –

3

máy chủ web của bạn (apache?) Đang hoạt động chính là sử dụng riêng, và không có quyền ghi vào thư mục bạn đang chạy mkdir trong.

Cho phép người sử dụng máy chủ web của bạn ghi vào thư mục bằng A) làm cho nó Chủ sở hữu, B) thêm nó vào nhóm nếu Tập đoàn có quyền ghi, hoặc C) cho phép mọi người viết (không được khuyến nghị cho hầu hết các thiết lập).

+0

Đã gặp sự cố tương tự, đã được giải quyết! Tôi đã tạo một thư mục với FTP lúc đầu, khi sử dụng mkdir để tạo các thư mục bên trong nó không hoạt động. Xóa thư mục và đảm bảo tập lệnh tạo tập lệnh giải quyết nó. – Pedro

0

bạn có thể thử với umask, Khi PHP đang được sử dụng làm mô-đun máy chủ, umask được khôi phục khi mỗi yêu cầu hoàn tất.

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
Các vấn đề liên quan