Hướng dẫn dùng mkdir windows trong PHP

Tôi có một máy chủ Linux với appache làm máy chủ web. Trong tập lệnh PHP của tôi, tôi đang tạo các thư mục với 0777chế độ. mã khá đơn giản như sau:

Nội dung chính

  • Đăng nhập để trả lời câu hỏi
  • Có thể bạn quan tâm
  • Định nghĩa.
  • Trong đó.
  • Giá trị trả về.
  • Ví dụ 1.
  • Ví dụ # 2 mkdir () sử dụng tham số recursive 
  • Errors/Exceptions.
  • Hàm liên quan.
  • Thông tin thêm.

mkdir($path,0777)

khi tôi chạy tập lệnh này và đi tới trình quản lý tệp máy chủ của mình, thư mục vẫn ở đó nhưng quyền được gán cho thư mục đó là 0755. Tôi không thể hiểu tại sao điều này lại xảy ra !! khi thư mục được tạo, cột người dùng có apache trong đó nhưng quyền là 0755.

  • php
  • apache
  • mkdir

9 hữu ích 0 bình luận 15k xem chia sẻ

answer

23

Bạn nên thử với umask

$old = umask(0); 
mkdir($path,0777); 
umask($old); 

23 hữu ích 3 bình luận chia sẻ

answer

4

Bạn co thể thử:

chmod ( string $filename , int $mode )

Xem liệu điều đó có thể khắc phục sự cố về quyền hay không.

4 hữu ích 0 bình luận chia sẻ

answer

0

Apache có thể không có quyền thay đổi điều này. Những gì bạn có thể làm là. Đảm bảo rằng apache đang chạy cùng nhóm với nhóm tệp hiện tại của bạn. Sau đó, apache sẽ có thể thực hiện các thay đổi đối với tệp đó. Bạn có thể thay đổi nhóm apache của mình trong cấu hình apache này. Hoặc cách dễ nhất là thay đổi toàn bộ người dùng dự án thành người dùng apache. Sau đó, apache có thể làm cho chúng ta thay đổi nó muốn.

đi tới tệp từ máy chủ của bạn và nhập ls -al và xem người dùng và nhóm

0 hữu ích 0 bình luận chia sẻ

answer

0

Có thể là mặt nạ của bạn:


0 hữu ích 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

  • Định nghĩa.
  • Cú pháp.
    • Cú pháp:
    • Trong đó.
    • Giá trị trả về.
  • Ví dụ.
    • Ví dụ 1.
      • code.
    • Ví dụ # 2 mkdir () sử dụng tham số recursive 
  • Errors/Exceptions.
  • Ghi chú.
  • Hàm liên quan.
  • Thông tin thêm.

Định nghĩa.

Hàm mkdir() sẽ tạo mới thư mục theo đúng đường dẫn truyền vào.

Cú pháp.

Cú pháp:

mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = FALSE [, resource $context ]]] ) : bool

Trong đó.

  • $filename là đường dẫn sẽ tạo thư mục.
  • $mode là quyền của thư mục, mặc định là 0777. – mode  là 0777 theo mặc định, có nghĩa là truy cập rộng nhất có thể. Để biết thêm thông tin về các chế độ, hãy đọc chi tiết trên trang chmod (). –mode  bị bỏ qua trên Windows. – Lưu ý rằng bạn có thể muốn chỉ định chế độ là số bát phân, có nghĩa là nó phải có số 0 đứng đầu. Chế độ cũng được sửa đổi bởi ô hiện tại, bạn có thể thay đổi bằng cách sử dụng umask ().
  • $recursive là tham số, mặc định là False, nếu mang giá trị True sẽ cho phép tạo các thư mục lồng nhau.
  • $context mô tả về ngữ cảnh.

Giá trị trả về.

  • Hàm sẽ trả về True nếu tạo thư mục thành công, ngược lại hàm trả về False.

Ví dụ.

Ví dụ 1.

code.

Ví dụ # 2 mkdir () sử dụng tham số recursive 

Errors/Exceptions.

  • Phát ra lỗi mức E_WARNING nếu thư mục đã tồn tại.
  • Phát ra lỗi cấp độ E_WARNING nếu các quyền liên quan ngăn chặn việc tạo thư mục.

Ghi chú.

  • Lưu ý: Khi safe mode được bật, PHP sẽ kiểm tra xem thư mục mà tập lệnh đang hoạt động có cùng UID (chủ sở hữu) với tập lệnh đang được thực thi hay không.

Hàm liên quan.

  • is_dir() – Cho biết tên tệp là một thư mục
  • rmdir() – Xóa thư mục

Thông tin thêm.

  • Khi sử dụng recursive , hãy nhớ rằng nếu bạn đang sử dụng chmod () sau mkdir () để đặt chế độ mà không bị sửa đổi bởi giá trị của uchar (), bạn cần gọi chmod () trên tất cả các thư mục đã tạo.
  • Chức năng tạo thư mục recursive  và có thể ghi, nếu chúng tôi có quyền, mà không tạo cảnh báo: * Tạo thư mục có thể ghi chính xác. * Kiểm tra nếu thư mục tồn tại và có thể ghi. * Nếu không tồn tại hãy thử tạo nó một lần ghi.
    function createWritableFolder($folder)
    {
        if($folder != '.' && $folder != '/' ) {
            createWritableFolder(dirname($folder));
        }
        if (file_exists($folder)) {
            return is_writable($folder);
        }
    
        return is_writable($folder) && mkdir($folder, 0777, true);
    }
  •  Chế độ trên thư mục của bạn bị ảnh hưởng bởi ô hiện tại của bạn. Nó sẽ kết thúc có ( và (không phải )). Nếu bạn muốn tạo một có thể đọc được công khai, hãy làm một cái gì đó như thế này:
  • Xin lưu ý rằng trong một môi trường được chia sẻ, tôi đã không tính đến một ô hiện có khi tôi thực hiện một mkdir (dirname, 0755). Điều này đã kết thúc việc tạo thư mục (hàm trả về đúng), nhưng tôi không có quyền làm bất cứ điều gì trong thư mục, thậm chí tôi cũng không thể xem nó tồn tại qua ftp. Tuy nhiên, file_exists (dirname) đã trả về đúng. Cuối cùng, tôi đã tìm ra những gì đã xảy ra và có thể rmdir (dirname), sau đó tạo thư mục chính xác. Vì vậy, khi viết các tập lệnh mà bạn mong muốn có thể mang theo được, hãy sử dụng ô để đặt ô của bạn phù hợp hoặc thực hiện một mkdir (dirname) thẳng theo sau là chmod (dirname, 0755) (hoặc bất cứ thứ gì bạn đang tìm kiếm). Nếu bạn mắc lỗi tương tự tôi đã làm, bạn sẽ có thể rmdir () hoặc chmod () thư mục để nó có thể truy cập được.

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm mkdir() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com