对move_uploaded_file的权限被拒绝到IIS中的另一台服务器

时间:2011-01-14 11:51:15

标签: php iis copy file-permissions

我在IIS上运行了一个PHP Web应用程序,它允许用户从一个简单的html表单上传文件。然后将上载的文件移动到另一台服务器上的文件夹中。这在Apache上运行正常,但在IIS上失败并出现错误:

  

function ['move_uploaded_file']无法打开流:权限被拒绝   在...

我已经检查了目录的所有权限。如果我通过命令行运行一个简单的PHP脚本将文件从服务器复制到另一台服务器上的文件夹中,它可以正常工作,所以我怀疑问题出在IIS上。

 if (move_uploaded_file($_FILES ["file"] ["tmp_name"], "\\\\000.00.0.00\\tia\\web\\upload\\" .$_FILES["file"]["name"])) {

2 个答案:

答案 0 :(得分:1)

根据我在评论中看到的内容,您使用\\前缀网络共享作为move_uploaded_file()操作的目标。

我敢打赌,不允许PHP访问该共享。请记住,PHP使用IIS的权限运行!

首先尝试保存到本地的全局可写路径。如果可行,您知道必须修复共享的权限。

答案 1 :(得分:1)

这已经涵盖here。引用原因:

  

您已将目标目录映射到共享,例如\ server2 \ files。这些映射仅适用于当前用户(例如,管理员帐户),而不适用于您的php可能正在运行的IUSR帐户(假设IIS)。解决方案,不要使用映射,而是使用完整的'unc'路径名,即'\ server \ share \ folder \ file.ext',还要记住IUSR帐户需要访问这些共享/文件夹/文件