>更新/可能的解决方案:我意识到文件正在从C:'Windows'Temp
中移动,但由于文件权限,它们是不可见的。如果我尝试通过浏览器访问文件,则会收到 401 错误。我相信这些文件保留了它们的原始权限,所以我无法通过 PHP/浏览器查看它们或弄乱它们。唯一的选择是更改C:'Windows'Temp
文件夹权限或将default_upload_folder移动到wwwroot
链中的某个内容。
--
我有一个运行 PHP 脚本的 IIS7 服务器,该脚本接受$_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
.我有一种感觉,这可能是我的问题所在,但我不知道如何解决它。
检查您是否在 php 中有doc_root
设置.ini指向正确的目录。您还应该指定upload_tmp_dir
(在File uploads
部分中;doc_root
的子文件夹会很棒(以确保它与系统默认值不同。