`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);
}

관련 정보