`mkdir()`:使用 PHP 建立資料夾的權限被拒絕

`mkdir()`:使用 PHP 建立資料夾的權限被拒絕

我有這個 PHP 腳本:

$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; // is in CodeIngiter
if (!is_dir($dir)) {
    mkdir($dir, 755);
}

這將創建一個用於儲存帖子圖像的資料夾。但是我收到此錯誤/警告:

Severity: Warning
Message:  mkdir(): Permission denied

我無法建立該資料夾。

我怎樣才能解決這個問題?我的資料夾結構如下所示:

/opt/lampp/htdocs/www/my-site/public/ (uploads/posts) // all folders inside files will generate in php

一些進一步的資訊:如果我評論此程式碼,手動建立posts資料夾,然後嘗試上傳文件,我會收到一條錯誤訊息,指出目標路徑不可寫。

輸出ls -l /opt/lampp/htdocs/www/my-site/

drwxrwxr-x 15 lykos lykos 4096 Sep 17 23:08 application
drwxrwxrwx 6 lykos lykos 4096 Sep 29 22:00 public
drwxrwxr-x 8 lykos lykos 4096 Sep 7 12:31 system

輸出ls -l /opt/lampp/htdocs/www/my-site/public

drwxr-xr-x 4 lykos lykos 4096 Sep 18 21:48 css
drwxr-xr-x 2 lykos lykos 4096 Sep 27 19:18 img
-rwxrwxr-x 1 lykos lykos 9872 Sep 17 23:04 index.php
drwxr-xr-x 8 lykos lykos 4096 Sep 27 20:06 js
drwxr-xr-x 2 lykos lykos 4096 Sep 29 20:34 uploads

答案1

問題出在你的mkdir()呼叫中,而不是在 Ubuntu 中。

按照你的評論ls -l /opt/lampp/htdocs/www/my-site/public/uploads不存在,所以你應該呼叫mkdir()傳遞recursive參數:

$dir = '/uploads/posts';
if (!is_dir($dir)) {
    mkdir($dir, 755, true);
}

相關內容