PHP mkdir 함수로 디렉토리를 만들려고하는데 다음과 같은 오류가 발생합니다 Warning: mkdir() [function.mkdir]: Permission denied in ...
.. 문제를 해결하는 방법?
답변
나는 이것이 오래된 스레드라는 것을 알고 있지만 더 나은 대답이 필요합니다. 권한을 777로 설정할 필요가 없습니다. 이는 세계에 대한 읽기 및 쓰기 액세스를 제공하므로 보안 문제입니다. 아파치 사용자에게 디렉토리에 대한 읽기 / 쓰기 권한이 없을 수 있습니다.
Ubuntu에서 수행하는 작업은 다음과 같습니다.
-
모든 파일이 Apache 그룹 및 사용자의 소유인지 확인하십시오. Ubuntu에서는 www-data 그룹 및 사용자입니다.
chown -R www-data:www-data /path/to/webserver/www
-
다음으로 www-data 그룹의 모든 구성원이 파일을 읽고 쓸 수 있습니다.
chmod -R g+rw /path/to/webserver/www
PHP mkdir()
함수는 이제 오류를 반환하지 않고 작동합니다.
답변
미래에 구글을 통해 이것을 찾는 사람들을위한 늦은 답변. 나는 같은 문제에 부딪쳤다.
참고 : 저는 MAC OSX LION을 사용하고 있습니다.
아파치가 사용자 “_www”로 실행되고 있으며 파일을 편집 할 수있는 권한이 없습니다. php를 통해 작동하는 파일 시스템 기능이 없음을 알 수 있습니다.
어떻게 고치는 지:
Finder 창을 열고 메뉴 모음에서 이동> 폴더로 이동> / private / etc / apache2를 선택합니다.
이제 httpd.conf를 엽니 다.
찾기:
User _www
Group _www
사용자 이름 변경 :
User <YOUR LOGIN USERNAME>
이제 다음 양식 터미널을 실행하여 아파치를 다시 시작하십시오.
sudo apachectl -k restart
그래도 작동하지 않으면 위의 작업을 수행하기 전에 다음을 수행합니다. 관련이있을 수 있습니다.
터미널을 열고 다음 명령을 실행합니다. (내 웹 서버 파일은 / Library / WebServer / www에 있습니다. 웹 사이트 위치에 따라 변경)
sudo chmod 775 /Library/WebServer/www
sudo chmod 775 /Library/WebServer/www/*
답변
PHP에서 mkdir을 사용할 때 권한을 777로 설정하지 마십시오.
링크 전용 답변은 StackOverflow에서 모범 사례로 간주되지 않지만 여기에 제공된 조언은 일반적으로 후속 조치를 취해서는 안됩니다.
비슷한 질문에 대한이 훌륭한 답변으로 되돌리고 싶습니다 . 나는 인용한다 :
777 사용 제안을 중지하십시오. 모든 사람이 파일을 쓸 수있게 만들고 있습니다. 이는 권한 시스템이 설계된 모든 보안을 잃는다는 것을 의미합니다. 이것을 제안한다면, 잘못 구성된 웹 서버에 미칠 수있는 결과에 대해 생각해보십시오. 파일을 덮어 쓰면 웹 사이트를 “해킹”하기가 매우 쉬워 질 것입니다. 그러지 마십시오.
답변
디렉토리의 권한을 수정 당신은 디렉토리를 만들려고 의를 .
답변
이 스레드가 오래되었다는 것을 알고 있지만 언젠가 누군가에게 도움이 될 것입니다.
PHP가 mkdir ()에 대해 “Permission denied”라고 말하는 문제-잘못된 URL 경로. 따라서 문제를 해결하려면 올바른 경로를 얻기 만하면됩니다. 나는 이렇게했다 :
<?php
$root = $_SERVER["DOCUMENT_ROOT"];
$dir = $root . '/somefolder/';
if( !file_exists($dir) ) {
mkdir($dir, 0755, true);
}
?>
답변
디렉토리를 만들려면 파일 시스템 권한이 있어야합니다.
예 : Ubuntu 10.04에서 apache (php)는 사용자로 실행됩니다 : www-data in group : www-data
즉, 사용자 www-data는 디렉토리를 생성하기 위해 액세스해야합니다.
www-data 사용자가 되려면 ‘su www-data’를 사용하여 직접 시도 할 수 있습니다.
빠른 수정으로 다음을 수행 할 수 있습니다. sudo chmod 777 my_parent_dir
답변
당신이 할 수있는 다른 일은 다음으로 이동하는 것입니다 : / etc / sudoers
해당 사용자에게 권한을 부여하는 다음 줄을 추가합니다. www-data ALL = (ALL : ALL) ALL Why www-data? 이것은 아파치가이 사용자 이름으로 실행되기 때문입니다.
사용자가 다른 경우 사용자 이름 ALL = (ALL : ALL) ALL을 시도하십시오.
이것은 나를 위해 일했습니다.
