2011-02-10 41 views
8

Tôi nhận được lỗi sau khi cố gắng gọi mkdir() trên một máy chủ ...Permission denied trên mkdir()

Cảnh báo: mkdir() [function.mkdir]: Permission denied trong /home/server/public_html/wp-content/themes/mytheme/catimages/cat-images.php trên đường dây 373

chức năng dưới đây. Cố gắng tạo thư mục trong thư mục "wp-content/uploads" của trang web. Tôi đã xác minh rằng phiên bản PHP là 5.2.15 và các tệp bên trong thư mục chủ đề có thể ghi được, nhưng điều đó không nhất thiết có nghĩa là thư mục tải lên có thể ghi được mà tôi cho là.

Làm cách nào để tìm hiểu xem thư mục tải lên có thể ghi được không?

protected function category_images_base_dir() 
{ 
    // Where should the dir be? Get the base WP uploads dir 
    $wp_upload_dir = wp_upload_dir(); 
    $base_dir = $wp_upload_dir[ 'basedir' ]; 
    // Append our subdir 
    $dir = $base_dir . '/cat-images'; 
    // Does the dir exist? (If not, then make it) 
    if (! file_exists($dir)) { 
     mkdir($dir); //THIS IS LINE 373 
    } 
    // Now return it 
    return $dir; 
} 
+0

Bạn có thể cần đặt cờ resurice của mkdir;) – NikiC

+0

:) điều này thực sự buồn cười: làm thế nào bạn có thể tìm ra? -> bạn nhận được Cảnh báo: ... Giấy phép bị từ chối ..., vì vậy bạn biết cho shure thư mục không thể ghi được bởi người dùng máy chủ web. nếu bạn có quyền truy cập ssh làm chmod -R 777/home/server/public_html/wp-content, nếu bạn không có quyền truy cập ssh, bạn có thể mở ứng dụng ftp yêu thích, duyệt đến thư mục wp-content rồi nhấp chuột phải trên wp-nội dung và hầu hết các khách hàng ftp sẽ có một tab quyền hoặc hộp ở đâu đó xung quanh có phù thủy bạn sẽ sử dụng để thay đổi quyền. –

+6

@poelinca Nếu tôi có thể, tôi sẽ downvote điều đó. Bạn đang nghiêm túc đề xuất các thư mục của mình để có thể đọc được trên thế giới, do đó, "vấn đề biến mất" ?! –

Trả lời

7

is_writable() có lẽ là chức năng bạn đang tìm kiếm.

http://cz.php.net/manual/en/function.is-writable.php nói:

Returns TRUE nếu tên tập tin tồn tại và có thể ghi được. Đối số tên tệp có thể là tên thư mục cho phép bạn kiểm tra xem thư mục có thể ghi được hay không.

Ngoài ra, dòng trực tiếp tiếp theo là liên quan ở đây:

Hãy ghi nhớ rằng PHP có thể được truy cập các tập tin như id người dùng mà máy chủ web chạy như (thường 'ai').

Nói cách khác, hãy kiểm tra xem thư mục của bạn có thể ghi được bằng id người dùng của máy chủ web không - đây có thể là một id người dùng khác với id của bạn! Đặt quyền thích hợp - ví dụ: thiết lập nhóm người dùng của thư mục cho người dùng của máy chủ và cấp quyền đọc, ghi và thực hiện cho nhóm. (chgrp somegroup uploads; chmod g+r uploads; chmod g+w uploads; chmod g+x uploads)

+0

Cảm ơn câu trả lời tuyệt vời. Tôi sẽ chèn một số kiểm tra mã bổ sung để xác minh is_writable() trạng thái của thư mục mẹ và thêm xử lý ngoại lệ trong sự kiện đó. –

+0

@Scott B: Bạn được chào đón. – Piskvor

1

Đảm bảo thư mục chính có thể ghi được trong quá trình máy chủ web chạy.

Chỉnh sửa: Rất tiếc, trả lời sớm. Máy chủ của bạn có cung cấp cho bạn một trình duyệt tập tin GUI không?

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