2012-03-07 6 views
0

업데이트/가능한 해결책 : 파일이 C:\Windows\Temp에서 이동 중이지만 파일 권한으로 인해 보이지 않는다는 것을 깨달았습니다. 브라우저를 통해 파일에 액세스하려고하면 401 오류가 발생합니다. 나는이 파일들이 원래의 권한을 유지하고있어서 PHP/브라우저를 통해 파일을 볼 수 없거나 엉망이라고 생각한다. 유일한 옵션은 C:\Windows\Temp 폴더 사용 권한을 변경하거나 wwwroot 체인 내의 default_upload_folder로 이동하는 것입니다.move_uploaded_file 및 ZipArchive :: Close의 자동 실행 실패

-

나는 $_FILES을 허용하는 PHP 스크립트를 실행하는 IIS7 서버가 디렉토리에 파일을 추가 할 move_uploaded_file을 수행하고 또한 함께 ZipArchive을 사용하여 파일을 참아있다.

이 두 문은 모두 실패합니다. 내가 스크립트 내에서이를 확인할 때 0777 권한을 가진 것으로

ini_set('display_errors',1); 

if(!empty($_FILES)){ 

    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $targetPath = 'C:\\inetpub\\wwwroot\\sitename\\design\\uploads\\'; 
    $targetFile = $targetPath.$_FILES['Filedata']['name']; 

    $zip_file = $targetPath . htmlspecialchars($_POST['session_id']) . '.zip'; 

    move_uploaded_file($tempFile, $targetFile); 

    $zip = new ZipArchive; 
    $res = $zip->open($zip_file, ZipArchive::CREATE); 
    $zip->addFile($tempFile, $_FILES['Filedata']['name']); 
    $zip->close(); 

} 

$tempFile$targetPath 쇼 : 여기

코드 로직입니다.

move_uploaded_file은 오류가 표시되지 않으며 true을 반환하지만 다른 디렉토리를 사용하면 오류가 발생합니다. 이 디렉토리가 올바른 것 같습니다. 이 코드는 파일을 새 디렉토리로 이동하지 못합니다. try...catch을 사용하면 오류 메시지가 표시되지 않습니다.

ZipArchive 코드 중 어느 것도 $zip->close()까지 실패하며 false을 반환합니다. try...catch을 사용하면 오류 메시지가 표시되지 않습니다.

코드가 내 WAMP 테스트 환경에서 완벽하게 작동했습니다. 이 스크립트를 실행하는 코드는 C:\inetpub\wwwroot\sitename\design\uploadify\uploadify.php입니다.

$_FILESvar_dump을 기반으로 정확한 데이터를 가지고 있습니다. $tempFileC:\Windows\Temp\php___.tmp으로 해결됩니다. 이 문제가 내 문제의 원인 일 수 있다고 생각하지만 문제를 해결하는 방법을 모르겠습니다.

+0

$ _FILES [ 'Filedata'] [ 'error']의 값은 무엇입니까? UPLOAD_ERR_OK (0) 여야합니다. – Martin

+0

예 $ _FILES가 될 것이다 : 배열 ( [FILEDATA] => 배열 ( [이름] => [형태] => 애플리케이션/octet-stream을 vbv_logo.gif [tmp_name] => C : \ WINDOWS \ Temp \ phpC62F.tmp [오류] => 0 [크기] => 2132 ) ) –

답변

0

정확한 디렉토리에 php.ini 파일의 doc_root 설정이 있는지 확인하십시오. 시스템 기본값과 다른지 확인하려면 upload_tmp_dir (File uploads 섹션에, 서브 폴더는 doc_root)을 지정해야합니다.