使用PHP在Windows中设置文件权限

我有一个脚本,上传一个* .csv导入到一个数据库表,我已经在Linux通过chmod($target, 0777);伟大的chmod($target, 0777); 但我不能为我的生活find解决scheme来做到这一点,但在基于Windows的Apache服务器。

其他一些post有人回应“不要放在0777,它应该工作”,但是我不是这种情况。 谢谢!

Solutions Collecting From Web of "使用PHP在Windows中设置文件权限"

感谢留在我原来的帖子的评论,我能够找出一些更多的帮助从http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-继承的权限错误/

只有当您使用PHP上传文件时才会出现此问题。 上传文件时,PHP将文件发送到硬盘上的临时目录(对于我来说,它是C:\ Windows \ Temp),然后将其复制到它的预期目录中。 一旦文件已经在临时目录中,它就被分配了该目录的权限。 问题是当Windows复制该文件时,它保留了临时目录的权限,并且不会继承您的Web目录的权限。

解决这个问题最简单的方法就是将临时目录添加到你想要的目录的权限。 不需要清除临时目录中的权限,只需将Web目录的权限添加到临时目录即可。 换句话说,请按照下列步骤

  1. 要更改临时上传目录的权限,请在php.ini文件中找到“upload_tmp_dir”。
  2. 将它设置到你选择的目录(当然是在你的网页文件夹之外),或者把它保持默认(对我来说它是C:\ Windows \ Temp)。
  3. 浏览到这个文件夹,并添加您的网页文件夹的权限。

虽然Brian Leishman的回答是有效的,但是如果您无法编辑临时文件夹的权限,则可以使用上述文件在命令行上手动从新位置手动继承权限:

 icacls "target.txt" /q /c /reset 

所以,使用PHP的exec()函数:

 exec( 'icacls "target.txt" /q /c /reset' ); 

有关各种icacls标志的详细信息,请参阅: https : icacls

提示:使用/t标志,可以使用模式匹配来处理多个文件。