Php 移动上传的文件和ZipArchive::Close时无提示失败

Php 移动上传的文件和ZipArchive::Close时无提示失败,php,iis-7,uploadify,Php,Iis 7,Uploadify,更新/可能的解决方案:我意识到文件正在从C:\Windows\Temp移动,但由于文件权限,它们不可见。如果我试图通过浏览器访问这些文件,就会出现401错误。我相信这些文件保留了它们的原始权限,因此我无法通过PHP/browser查看它们或处理它们。唯一的选项是更改C:\Windows\Temp文件夹权限或将默认的\u upload\u文件夹移动到wwwroot链中的某个位置 - 我有一个IIS7服务器,它运行一个PHP脚本,该脚本接受$_文件,执行一个move_上传的$_文件,将文件添加到一个

更新/可能的解决方案:我意识到文件正在从C:\Windows\Temp移动,但由于文件权限,它们不可见。如果我试图通过浏览器访问这些文件,就会出现401错误。我相信这些文件保留了它们的原始权限,因此我无法通过PHP/browser查看它们或处理它们。唯一的选项是更改C:\Windows\Temp文件夹权限或将默认的\u upload\u文件夹移动到wwwroot链中的某个位置

-

我有一个IIS7服务器,它运行一个PHP脚本,该脚本接受$_文件,执行一个move_上传的$_文件,将文件添加到一个目录,并使用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_文件不显示错误并返回true,但如果使用其他目录,则返回错误。看来这个目录是正确的。此代码无法将文件移动到新目录中。如果我使用try…catch,则没有错误消息

在$zip->close之前,ZipArchive代码都不会失败,这将返回false。如果我使用try…catch,则没有错误消息

该代码在我的WAMP测试环境中运行得非常好。运行此脚本的代码是C:\inetpub\wwwroot\sitename\design\uploadify\uploadify.php


$\u文件具有基于var\u转储的正确数据$tempFile解析为C:\Windows\Temp\php\uuu\uu.tmp。我有一种感觉,这可能是我的问题所在,但我不知道如何解决它。

检查您是否在php.ini中设置了doc\u root,并指向正确的目录。您还应该在文件上载部分指定上载\u tmp\u目录;确保doc_root的子文件夹与系统默认值不同将非常棒。

美元文件['Filedata']['error']的值是多少?它应该是上传\u ERR\u OK 0。示例$文件是:数组[Filedata]=>Array[name]=>vbv\u logo.gif[type]=>application/octet stream[tmp\u name]=>C:\Windows\Temp\phpC62F.tmp[error]=>0[size]=>2132