【问题标题】:Cannot upload file in IE11 using PHP (UPLOAD_ERR_NO_TMP_DIR)无法使用 PHP 在 IE11 中上传文件 (UPLOAD_ERR_NO_TMP_DIR)
【发布时间】:2015-03-14 01:35:26
【问题描述】:

我在尝试将文件上传到我的服务器时遇到 IE11 错误。

上传表单的相关部分:

echo '<form enctype="multipart/form-data" action="upload.php" method="POST"><br>';
echo '<input type="file" name="uploadFile"><br>';
echo '<input type="text" name="displayName"><br>';
echo '<input type="submit" name="submit" value="Submit"><br></form>'; 

这适用于 Chrome,但 IE 给了我一个$_FILES['uploadFile'] ['error'],其值为:

6 (UPLOAD_ERR_NO_TMP_DIR);缺少一个临时文件夹。

另一个similar topic 的此错误涉及设置与 OP 的托管公司的权限,但我正在上传到我自己的服务器。侧边栏中的Similar Questions 似乎不相关。

我没有在 php.ini 中设置默认临时目录。 sys_get_temp_dir() 返回 C:\Windows\TEMP。 Chrome上传到临时文件夹没有问题并且IE认为它丢失的任何原因?有没有地方我必须为 IE 设置一组单独的权限?

谢谢!

【问题讨论】:

  • 这不应该取决于所使用的浏览器——毕竟这只是临时存储文件的服务器端问题。您是否尝试过在配置中指定 upload_tmp_dir
  • 我设置了upload_tmp_dir = /tmp(/tmp 对用户有写权限)但由于某种原因仍然得到sys_get_temp_dir() = C:\Windows\TEMP。现在正在调查。我不认为这取决于浏览器,但有没有解释为什么这适用于 Chrome? php的处理方式或临时目录的指向方式有什么不同吗?
  • 不,应该没有区别。请使用绝对路径设置upload_tmp_dir
  • 谢谢,CBroe。将其更改为upload_tmp_dir = "C:\inetpub\wwwroot\tmp" 仍将sys_get_temp_dir() 显示为C:\Windows\TEMP,我假设这是默认的临时目录。在 Chrome 中显示相同的内容,但文件上传没有问题。
  • 使用phpinfo()检查upload_tmp_dir实际使用的值。

标签: php file-upload server


【解决方案1】:

所以,我尝试使用 IE9 进行上传,它成功了。问题在于我们机构的 IE11 安装时使用的默认安全设置。所以,这(当然)不是浏览器问题。 怀疑这一点,我应该在 Chrome 中一切正常时直接进入设置。

CBroe,感谢您的帮助(抱歉浪费您的时间!)

次要的:我的 php.ini 有 2 行 upload_tmp_dir 行,所以评论后者(指向 C:\Windows\Temp)指向正确的目录。

希望这可以避免将来有人头疼。

【讨论】:

    猜你喜欢
    • 2017-06-30
    • 2010-12-21
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多