我在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"])) {
答案 0 :(得分:1)
根据我在评论中看到的内容,您使用\\
前缀网络共享作为move_uploaded_file()
操作的目标。
我敢打赌,不允许PHP访问该共享。请记住,PHP使用IIS的权限运行!
首先尝试保存到本地的全局可写路径。如果可行,您知道必须修复共享的权限。
答案 1 :(得分:1)
这已经涵盖here。引用原因:
您已将目标目录映射到共享,例如\ server2 \ files。这些映射仅适用于当前用户(例如,管理员帐户),而不适用于您的php可能正在运行的IUSR帐户(假设IIS)。解决方案,不要使用映射,而是使用完整的'unc'路径名,即'\ server \ share \ folder \ file.ext',还要记住IUSR帐户需要访问这些共享/文件夹/文件