2011-09-10 8 views
3

PHP를 사용하여 폴더를 만든 다음 다른 폴더를 만들려고합니다.PHP 폴더 사용 권한 문제

이 디렉토리 구조 인 경우 나는

/home/site       (owner : user1) 

지금, 나는

mkdir("/home/site/newdir",0777);  (user : apache) 

/홈/사이트/NEWDIR이 생성되는 디렉토리하지만의 사용자 사용하여 폴더를 만들 수 있습니다 디렉토리는 "apache"

지금은

입니다.
mkdir("/home/site/newdir/anotherdir",0777); 

newdir에 다른 디렉토리를 만들지 마십시오.

도와주세요. 나는 그것의 주인 문제라고 생각한다. chmod()를 사용하여 소유자를 변경할 수 없습니다 (). 소유자는 동일하게 유지됩니다.

이 문제의 원인은 무엇입니까?

편집 :

<?php 
error_reporting(E_ALL); 

mkdir("./m",0777); // works 
mkdir("./m/v",0777); // doesnt work 

그리고 페이지 오류없이.

var_dump(is_writeable("./m")) // returns bool(true) 

편집 :이 수정되었습니다. 같은 문제를 겪고있는 다른 사람들을 위해, 그것은 PHP의 안전 모드가 "켜져"있기 때문입니다. 아직도 안전 모드가 정확히 무엇을하는지에 대한 이유를 모른다면 중첩 된 디렉토리를 만들 수는 없습니다.

하지만 지금은 작동합니다. 모든 것을 읽어 주셔서 감사합니다.

+1

당신은 0777 권한으로 디렉토리를 만드는, 이것은 권한 문제가 아니어야합니다./home/site/newdir에 디렉토리를 만들려고 할 때 PHP가 오류를 표시합니까? – arnaud576875

+1

오류가 있습니까? – Ikke

+0

오류가 없습니다. var_dump (is_writeable ("./ m"))는 true를 반환합니다. 편집 된 게시물을 확인하십시오. –

답변

1

mkdir()으로 생성 된 디렉토리의 모드는 현재 umask의 영향을받습니다. 따라서 chmod()이 작동하지 않습니다.

시도 :

$old_mask = umask(0); 
mkdir("/home/site/newdir/anotherdir",0777); 
umask($old_mask);