我的同事一直在通过托管在 Windows Server 2008 IIS 7 上的 PHP 上传文件,但她在下载文件时遇到了问题,即使上传文件夹的适当权限已授予 IIS_USRS 组。原来上传的文件不是!
2 回答
希望这可能对其他人有所帮助,我在这里研究并找到了解决方案:
http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-inherit-permissions-error/
简而言之,更改“upload_tmp_dir”(php.ini 文件中的路径)文件夹的权限以匹配您的 Web 应用程序文件夹权限。
如果您不能或不想更改临时文件夹(默认为系统临时文件夹)的权限。然后创建一个新的临时文件夹并为其设置所需的权限。然后更新 PHP INI upload_tmp_dir 值以指向该目录。
添加https://web.archive.org/web/20171121192635/http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-inherit-permissions的内容-error/,以防此链接将来不可用(感谢蒂芙尼的评论)。
如何使用 Windows IIS 服务器修复 PHP 上传文件继承权限错误
如果您像我一样使用 Windows IIS,那么您已经花费了数小时试图弄清楚为什么您上传的文件不会继承正确显示所需的权限。幸运的是,答案非常简单,而且大多数人都不会想到。
仅当您使用 PHP 上传文件时才会出现此问题。当您上传文件时,PHP 会将文件发送到硬盘驱动器上的临时目录(对我来说是 C:\Windows\Temp),然后将其复制到它的预期目录。一旦文件进入临时目录,它就会被分配该目录的权限。问题是当 Windows 复制该文件时,它会保留临时目录的权限,并且不会继承您的 Web 目录的权限。
解决此问题的最简单方法是将您预期的 Web 目录的权限添加到临时目录。无需删除临时目录中已有的权限,只需将 web 目录的权限添加到它们即可。换句话说,请按照以下步骤操作
- 要更改临时上传目录的权限,请在 php.ini 文件中找到“upload_tmp_dir”。
- 将其设置为您选择的目录(当然在您的 Web 文件夹之外)或将其保留为默认目录(对我来说是 C:\Windows\Temp)。
- 浏览到此文件夹并将您的 Web 文件夹的权限添加到其中。
就是这样!如您所见,它非常简单,只是 PHP 的人忘记告诉我们的一个小技巧。
而且您知道,如果这两个文件夹位于不同的驱动器上,您就不会遇到这个问题,因此也不会阅读此内容。