【发布时间】:2013-11-01 14:45:15
【问题描述】:
我有以下代码尝试从用户表单输入文件,并将其上传到网络服务器。
此代码确实可以在 Apache 服务器上运行,但是我现在正试图让相同的代码在我的 Windows IIS 6 Web 服务器上运行,该服务器安装了 PHP(版本 5.2.3)并且可以运行。我已经设置了 PHP.INI 文件,以便
file_uploads = 开启
upload_tmp_dir = "C:\Temp"
我的表格是
<form method="POST" action="do_upload.php" enctype="multipart/form-data">
<input type="file" name="img1" size="30">
<input type="submit" name="BtnUpload" value="Click To Upload Now">
</form>
我上传的 PHP 代码是
$abpath = "C:\MyWebs\Website1\httdocs\images";
@copy($img1, "$abpath/$img1_name") or $log .= "Couldn't copy image 1 to server";
if (file_exists("$abpath/$img1_name"))
{
$log .= "File 1 was uploaded";
}
else
{
$log .= "File 1 is not an image";
}
由于某种原因,当我检查 $img1 的值时,例如 echo $img1;它是空的。因此我尝试使用 $_FILES['img1']['name'] 获取文件。这工作正常,但我仍然无法上传任何文件
发生这种情况的任何想法。
【问题讨论】:
-
删除错误抑制运算符 (
@) 并确保通过在脚本顶部添加ini_set('display_errors',1); error_reporting(E_ALL);来显示所有错误。 -
因为
$img1和$img1_name尚未定义。 -
是的,我收到了通知:未定义的变量:img1_name。但是为什么我在 IIS 上得到这个而不是 Apache 呢?
-
为什么 Apache 上没有错误,我不能说(可能错误报告已关闭)。请参阅下面的Marc B's answer,这将为您提供更好的见解。我本来打算提出同样的建议,但他打败了我。 @Tommo1977
-
请参阅
move_uploaded_file()函数的手册以获取更多信息。 @Tommo1977
标签: php iis file-upload