2012-07-19 2 views
0

PHP에서 사진 업로드 및 크기 조정을 구현하려고합니다. 크기를 조정할 때 LAMP 스택과 Imagick 확장 프로그램을 사용하고 있습니다. 그러나 파일을 업로드하려고 할 때마다 파일의 소유권이 기본적으로 www-data로 설정되므로 파일에 변경 사항을 적용 할 수 없습니다. 다음은 내가 사용하는 코드입니다 :PHP 파일 업로드 소유권 문제

<?php 

if (is_uploaded_file($_FILES['picture']['tmp_name'])){ 

    $photoPath = $_SERVER['DOCUMENT_ROOT'] . '/photo_app/uploads/' . $_FILES['picture']['name']; 

    if (move_uploaded_file($_FILES['picture']['tmp_name'], $photoPath)){ 

     $image = new Imagick($photoPath); 
     $image -> scaleImage(250, 250, true); 
     $image -> writeImage($photoPath); 

    } 

} 

?> 

사진은 올바른 위치로 이동되지만 소유권 문제로 인해 크기가 조정되지 않습니다. 이 문제를 해결할 방법이 있습니까? 감사합니다 :)

+0

나는 이미지를 조작하려고하는 사용자 'www-data'가 그것을 업로드 한 사람이기 때문에 소유권 문제가 아닌지 의심 스럽다. – sberry

+0

웹 서버에 파일에 대한 액세스 권한이 없다는 오류가 실제로 표시됩니까? –

+0

실제로 액세스 오류가 발생하지 않습니다. 파일에 다른 소유자가 있고 www 데이터에 대한 액세스 권한이 읽기 및 쓰기로 설정되어 있기 때문에 그럴 것이라고 가정합니다. –

답변

1

업로드 된 파일의 사용자는 PHP가 실행되는 사용자가됩니다. 동일한 PHP 인스턴스에서 파일을 업로드하고 조작하기 때문에 전체 파일 권한이 있어야합니다.

+0

업로드 된 파일에 대한 모든 권한이 있다고 생각하지 않습니다. 업로드 된 파일을 마우스 오른쪽 버튼으로 클릭하면 권한 탭에서 www- 데이터가 소유자로 표시되고 액세스 권한은 www- 데이터를 읽고 쓰도록 설정됩니다. 그룹은 www- 데이터이며 액세스 권한은 읽기 전용으로 설정됩니다. 맨 아래에 '당신은 주인이 아니므로이 권한을 변경할 수 없습니다'라고되어 있습니다. –

+1

PHP는 종종 자신의 사용자로 실행되도록 구성됩니다. 그것은 물론 파일을 클릭하기 위해 사용하는 사용자와 다를 것입니다. PHP는 파일을 생성하기 때문에 수정하는 권한이 있습니다. – MrGlass