move_uploaded_file和ZipArchive :: Close上的静默失败

时间:2012-03-07 22:18:00

标签: php iis-7 uploadify

更新/可能的解决方案:我意识到文件正在从C:\Windows\Temp移动,但由于文件权限,它们是不可见的。如果我尝试通过浏览器访问文件,我会收到401错误。我相信这些文件保留了原始权限,所以我无法通过PHP /浏览器看到它们或弄乱它们。唯一的选择是更改C:\Windows\Temp文件夹权限或将default_upload_folder移动到wwwroot链中的某个位置。

-

我有一个IIS7服务器运行一个接受$_FILES的PHP脚本,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。我觉得这可能是我的问题所在,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

检查php.ini中的doc_root设置是否指向正确的目录。您还应指定upload_tmp_dir(在File uploads部分; doc_root的子文件夹会很棒),以确保它与系统默认值不同。