【问题标题】:PHP File Copy() Not working on IIS 6PHP File Copy() 在 IIS 6 上不起作用
【发布时间】: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


【解决方案1】:

你的代码应该是:

move_uploaded_file($_FILES['img1']['tmp_name'], "$abpath/$img1_name");

不要copy() 上传文件。在少数情况下,上传的文件可能会被篡改,这就是 move_uploaded_file() 存在的原因 - 它会检查这些特定类型的篡改。

此外,在处理上传文件时,请非常小心创建文件名的方式。如果您直接使用 $_FILES 中提供的 ANYTHING 作为文件的目标路径/名称的一部分,您将在您的服务器上打开严重的安全漏洞,恶意用户可以利用它在您的服务器上任意位置添加文件。

【讨论】:

  • 在你上面的例子中,我可以访问 "$abpath/$img1_name" 吗?
  • 可能。它会出现 $abpath 在您的文档根目录中。但既然你没有说出你所说的“访问”是什么意思,所以没有办法正确回答。
  • 谢谢,将我的代码更改为 move_uploaded_file($_FILES['img1']['tmp_name'], "$abpath\\".$_FILES['img1']['name']) 或$log .= "无法将图像 1 复制到服务器";工作。
  • 一般提示:在 Windows 上,您仍然可以使用 / 作为 PHP 中的目录分隔符。 PHP 会自动为你转换成反斜杠,这样你就不必再用双反斜杠了。 c:/mywebs/foo/bar 工作得很好。
猜你喜欢
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
相关资源
最近更新 更多