更新/可能的解決方案:我已經意識到文件正在從C:\Windows\Temp
中移出,但由於文件權限,它們不可見。如果我嘗試通過瀏覽器訪問這些文件,則會出現401錯誤。我相信這些文件保留了他們的原始權限,所以我無法通過PHP /瀏覽器查看它們或弄亂它們。唯一的選擇是更改C:\Windows\Temp
文件夾權限或將default_upload_folder移動到wwwroot
鏈中的某個位置。move_uploaded_file和ZipArchive上的靜默失敗::關閉
-
我有一個IIS7服務器中運行的PHP腳本,接受$_FILES
,做了move_uploaded_file
將文件添加到一個目錄,也使用ZipArchive
一起拉鍊的文件。
這兩個語句都失敗了。
下面是代碼邏輯:
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
顯示爲具有0777
權限當我從腳本中檢查它們。
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 2012-03-07 23:28:41
實施例$ _FILES將是:陣列 ( [Filedata上] =>數組 ( [名稱] => vbv_logo.gif [型] =>應用/八位字節流 [tmp_name的值] => C:\的Windows \ Temp \ phpC62F.tmp [error] => 0 [size] => 2132 ) ) – 2012-03-08 14:18:10