업데이트/가능한 해결책 : 파일이 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
입니다.
$_FILES
은 var_dump
을 기반으로 정확한 데이터를 가지고 있습니다. $tempFile
은 C:\Windows\Temp\php___.tmp
으로 해결됩니다. 이 문제가 내 문제의 원인 일 수 있다고 생각하지만 문제를 해결하는 방법을 모르겠습니다.
$ _FILES [ 'Filedata'] [ 'error']의 값은 무엇입니까? UPLOAD_ERR_OK (0) 여야합니다. – Martin
예 $ _FILES가 될 것이다 : 배열 ( [FILEDATA] => 배열 ( [이름] => [형태] => 애플리케이션/octet-stream을 vbv_logo.gif [tmp_name] => C : \ WINDOWS \ Temp \ phpC62F.tmp [오류] => 0 [크기] => 2132 ) ) –