文件上传失败

时间:2014-12-28 15:24:02

标签: php

您好我正在努力弄清楚为什么我的基本文件上传不起作用 我收到以下两个错误:

  

[2014年12月28日18:19:57欧洲/明斯克] PHP警告:move_uploaded_file(uploads / Screenshot_2014-12-12-10-21-27.png):无法打开流:C中的权限被拒绝: 38号线上的\ inetpub \ ftproot \ www.peachss.co.za \ test \ upload.php   [2014年12月28日18:19:57欧洲/明斯克] PHP警告:move_uploaded_file():无法移动' C:\ Windows \ Temp \ phpFDF8.tmp'到'上传/ Screenshot_2014-12-12-10-21-27.png'在第38行的C:\ inetpub \ ftproot \ www.peachss.co.za \ test \ upload.php

现在我可以弄清楚它必须与权限有关,但是我已经将IIS AppPool添加到网站文件夹中,以便网站访问文件夹,在php.ini中启用file_upload

我复制了以下php示例进行健全性检查,但同样的错误发生了 http://www.w3schools.com/php/php_file_upload.asp

我的网站托管在IIS

1 个答案:

答案 0 :(得分:3)

如果你像我一样,并且你使用 Windows IIS ,那么你花了好几个小时试图弄清楚为什么你上传的文件不会继承正确显示所需的权限。幸运的是,答案非常简单,大多数人都没想到过。

只有在使用PHP上传文件时才会出现此问题。当您上传文件时,PHP会将文件发送到硬盘驱动器上的临时目录(对我而言,它是 C:\ Windows \ Temp ),然后将其复制到它的目标目录。文件登陆临时目录后,将为其分配该目录的权限。问题是当Windows复制该文件时,它会保留临时目录的权限,并且不会继承您的Web目录的权限。

解决此问题的最简单方法是将临时目录添加到目标网络目录的权限中。无需删除临时目录中已有的权限,只需将web目录的权限添加到它们即可。换句话说,请按照以下步骤操作

  1. 要更改临时上传目录的权限,请查找 php.ini 文件中的“ upload_tmp_dir ”。

  2. 将其设置为您选择的目录(在您的网络文件夹之外)     当然)或保留默认值(对我而言 C:\ Windows \ Temp )。

  3. 浏览到此文件夹并添加您的网络文件夹的权限     它

  4. 就是这样!正如你所看到的,它非常简单,只是一个小技巧PHP的人忘了告诉我们。

    而且你知道,如果这两个文件夹位于不同的驱动器上,你就不会遇到这个问题,因此不会读这个。

    来源:http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-inherit-permissions-error/