我有一个上传* .csv的脚本导入到我通过chmod($target, 0777);
在linux中工作得很好的数据库表但是我不能在我的生活中找到解决办法确实如此,但在基于Windows的Apache服务器上。
其他一些帖子让人们回应并且没有投入0777并且它应该可以正常工作"但对我来说并非如此。谢谢!
答案 0 :(得分:22)
感谢我在原帖中留下的评论,我能够通过http://www.howyoudo.info/index.php/how-to-fix-windows-server-upload-file-inherit-permissions-error/
的更多帮助来解决这个问题。只有在使用PHP上传文件时才会出现此问题。当您上传文件时,PHP会将文件发送到上面的临时目录 硬盘(对我来说是C:\ Windows \ Temp),然后将其复制到 这是目的地。一旦文件登陆临时 目录,它被分配了该目录的权限。该 问题是当Windows复制该文件时,它会保留临时文件 目录的权限,不会继承您的Web目录 权限。
解决此问题的最简单方法是将临时目录添加到目标网络目录的权限中。没有必要 要删除临时目录中已有的权限,只需添加即可 web目录对它们的权限。换句话说,请遵循这些 步骤
- 要更改临时上传目录的权限,请查找 php.ini文件中的“upload_tmp_dir”。
- 将其设置为目录 您选择的(当然在您的网络文件夹之外)或保留它 默认(对我来说是C:\ Windows \ Temp)。
- 浏览到此文件夹并将网络文件夹的权限添加到其中。
醇>
答案 1 :(得分:3)
虽然Brian Leishman的答案可行,但如果您无法编辑临时文件夹的权限,则可以使用命令行中的以下内容手动使您上传的文件从其新位置继承权限:
icacls "target.txt" /q /c /reset
所以,使用PHP的exec()
函数:
exec( 'icacls "target.txt" /q /c /reset' );
有关各种icacls
标记的详细信息,请参阅:https://technet.microsoft.com/en-us/library/cc753525.aspx
提示:使用/t
标志,您可以使用模式匹配来处理多个文件。