2012-05-02 2 views
3

이것은 내가 지금까지 얻은 것입니다. 아카이브의 모든 파일에 0666을 적용 할 수 있어야합니다. 내가 수출하는 것처럼 할 수 없습니까? 보관 중 또는 보관 후 chmod를 변경하기위한 샘플 코드는 무엇입니까?PHP : 보관 중 Chmod 적용

$zip = new ZipArchive; 
if ($zip->open('upload/'. $username . $file_ext) === TRUE) { 
$zip->extractTo('dir/' . $username); 
$zip->close(); 
} else { 
echo 'failed'; 
} 

감사합니다. 브랜든

답변

3

디렉토리에 0666을 설정하면 디렉토리에 대한 07770666 파일 뿐만는 umask 값에 따라로 사용할 리눅스의 모든 과정에서 ;-)

파일 생성을 원하는하지 않을 수 있습니다 무엇을 마지막 권한이됩니다. 기본적으로 umask 값은 0022이며 0644과 같은 파일을 생성합니다. 그것은 뺄셈처럼 작동합니다.

umask을 0으로 재설정하면 필요한 것을 얻을 수 있습니다.

umask(0); 
$zip = new ZipArchive; 
if ($zip->open('upload/'. $username . $file_ext) === TRUE) { 
    $zip->extractTo('dir/' . $username); 
    $zip->close(); 
} else { 
    echo 'failed'; 
} 
+0

는 내가 언 아카이빙 스크립트와 서버에 대한 사용 권한이 내가 그들의 서비스에 파일을 전송하는 액세스 권한을 부여 할 필요가 있도록 API로 이것을 사용하여 문턱 0604. 임 전에 ... – blbaker

+0

내가 umask를 시도해야한다고 덧붙였다 (111); 또는 그런 무엇인가? – blbaker

+0

'umask (0)'이 작동하지 않는다면, 값을 변경해도 의미가 없습니다. 필자는 내 컴퓨터에'zip' 확장을 가지고 있지 않습니다 (컴파일하지 않을 것이기 때문에). 단지'touch ('testfile')만으로 테스트했고'umask'를 변경할 때 제대로 작동합니다. –