【问题标题】:Odd permissions on file modified by PHP move_uploaded_file()PHP move_uploaded_file() 修改的文件的奇怪权限
【发布时间】:2010-09-17 09:01:40
【问题描述】:

我在 Windows Server 2003 Enterprise 机器上运行 PHP 5.2.6。 IIS 设置为拒绝匿名访问并使用集成 Windows 身份验证。

我正在使用 PHP 脚本来保存从 Web 表单上传的文件。文件被上传到临时文件夹,脚本根据来自 web 表单的其他变量创建文件名和路径,然后脚本使用 PHP 的 move_uploaded_file() 将临时文件移动到最终位置。一切正常。简而言之,人们正在上传文件,因此组中的每个人都可以看到它们,并且文件是由脚本组织的。

我的问题是最终位置的文件具有奇怪的权限。它不会以临时位置或最终位置的权限结束。临时位置和最终位置都具有相同的权限:所有者和管理人员的完全权限;读取和读取/执行 2 个特定的 AD 安全组。最终文件仅包含:所有者和管理人员的全部权利。因此,虽然管理员和原始上传者在查看文件时没有问题,但组中的所有其他人在尝试访问它时都会得到“权限被拒绝”。

任何想法或建议将不胜感激!谢谢!

【问题讨论】:

    标签: php windows file-upload


    【解决方案1】:

    来自 move_uploaded_file 上的 php 页面(注意:这对我有用):

    对于在 Windows 和 IIS 上使用 PHP 的用户,您应该将 php.ini 中的“upload_tmp_dir”值设置为网站目录所在的某个目录,创建该目录,然后对其设置与您设置的相同的权限为您的网站目录。否则,当您上传文件并将其放入 C:\WINDOWS\Temp 时,然后将其移动到您的网站目录,其权限将无法正确设置。如果您想使用 ImageMagick 的转换实用程序之类的工具来操作该文件,这将给您带来问题。

    【讨论】:

      【解决方案2】:

      这似乎是 move_uploaded_file() 函数的问题:
      http://us3.php.net/move_uploaded_file
      看看下面的 cmets,注意 Florian 关于 copy() 的评论。

      copy() 会解决问题吗?:
      http://us3.php.net/manual/en/function.copy.php

      【讨论】:

      • 没问题,很高兴我能帮上忙。
      • 如果您使用 copy(),最好验证 is_uploaded_file() 在临时文件上返回 true,因为 move_uploaded_file() 实现了此检查
      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2013-04-14
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多