更新/可能的解决方案:我意识到文件正在从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
。我觉得这可能是我的问题所在,但我不知道如何解决它。
答案 0 :(得分:0)
检查php.ini中的doc_root
设置是否指向正确的目录。您还应指定upload_tmp_dir
(在File uploads
部分; doc_root
的子文件夹会很棒),以确保它与系统默认值不同。