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

Bri*_*ica 3 php windows permissions file

我有一个上传的*.csv导入到那个我有在Linux通过的伟大工程,一个数据库表的脚本chmod($target, 0777);,但我不能为我的生活找到解决方案做的正是这一点,但基于Windows的Apache服务器上.

其他一些帖子让人们回答"不要放入0777它应该有用",但对我来说情况并非如此.谢谢!

Bri*_*ica 24

感谢我在原帖上留下的评论,我可以从http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-获得更多的帮助.继承的权限错误/

只有在使用PHP上传文件时才会出现此问题.当您上传文件时,PHP会将文件发送到硬盘驱动器上的临时目录(对我来说是C:\ Windows\Temp),然后将其复制到它的目标目录.文件登陆临时目录后,将为其分配该目录的权限.问题是当Windows复制该文件时,它会保留临时目录的权限,并且不会继承您的Web目录的权限.

解决此问题的最简单方法是将临时目录添加到您希望的Web目录的权限中.无需删除临时目录中已有的权限,只需将web目录的权限添加到它们即可.换句话说,请按照以下步骤操作

  1. 要更改临时上载目录的权限,请在php.ini文件中找到"upload_tmp_dir".
  2. 将它设置为您选择的目录(当然在您的Web文件夹之外)或保留默认值(对我来说它是C:\ Windows\Temp).
  3. 浏览到此文件夹并向其添加Web文件夹的权限.

  • 我恨窗户. (4认同)
  • 这是Windows/IIS上PHP的正确解决方案. (3认同)

voi*_*ate 7

虽然布赖恩·利什曼的回答有效,但如果您无法编辑临时文件夹的权限,您可以使用命令行上的以下命令手动使上传的文件从其新位置继承权限:

icacls "target.txt" /q /c /reset
Run Code Online (Sandbox Code Playgroud)

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

exec( 'icacls "target.txt" /q /c /reset' );
Run Code Online (Sandbox Code Playgroud)

有关各种icacls标志的详细信息,请参阅:https : //technet.microsoft.com/en-us/library/cc753525.aspx

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