8

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

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

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

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

4

2 回答 2

8

从 move_uploaded_file 上的 php 页面(注:这对我有用):

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

于 2009-09-11T00:31:30.660 回答
4

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

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

于 2008-10-15T18:52:06.433 回答