2010-02-07 6 views
6

지난 2 시간 동안 내 머리카락을 꺼내 ​​왔으며 정말 바보 같은 짓을하고 있다고 확신합니다.mkdir가 PHP에서 작동하지 않습니다

<?php 
mkdir("blah", 0777); 
?> 

이것은 명령 줄을 통해 작동하며 폴더가 만들어집니다. 그러나 브라우저를 통해 실행하려고해도 똑같은 기능이 작동하지 않습니다. 모든 파일 사용 권한 문제?

+0

나는 이걸로 오랫동안 붙어있었습니다. 당신이 SELinux에 있다면 "ls -alZ"로 볼 수있는 "Security Context"라고 불리는 여분의 권한 계층이 있습니다. 'chcon system_u : object_r : httpd_sys_content_t : s0 public_HTML'과 같은 것을 사용하십시오. – changokun

답변

11

명령 줄에서 실행하는 동안 스크립트가 권한을 상속 받지만 브라우저에서 실행할 때 해당 권한이 상실 될 수 있습니까?

그런 경우 그룹에 대해 디렉토리 사용 권한 '쓰기'를 만들고 싶습니다.

+4

하하! 10,000 평판! 후자! –

3

웹 서버 (아파치?)가 자신의 사용자, 그리고 당신이 MKDIR를 실행하는 디렉토리에 쓸 수있는 권한이 없습니다로 실행됩니다.

받는 쓸 수있는 웹 서버의 사용자 권한을 부여 디렉토리에 A) 소유권을 부여하거나, B) 그룹에 쓰기 권한이있는 경우 그룹에 추가하거나, C) 모든 사람에게 쓰기 권한을 부여합니다 (대부분의 설정에는 권장되지 않음).

+0

동일한 문제가 발생했습니다. 해결되었습니다! 처음에는 mkdir을 사용하여 폴더를 만들 때 FTP가있는 폴더를 만들었습니다. 폴더를 삭제하고 스크립트로 작성되었는지 확인하여 해결합니다. – Pedro

0

umask으로 시도해 볼 수 있습니다. PHP를 서버 모듈로 사용하는 경우 각 요청이 완료되면 umask가 복원됩니다.

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
관련 문제