由于IUSR的“访问被拒绝”,PHP临时上传的文件不会在IIS上被删除

当通过HTML表单将file upload到PHP脚本时,即使请求结束,并且该文件未被PHP代码明确删除,上传的文件仍将保留在upload_tmp_dir中。

预期行为:当请求结束时,未使用,未移动或删除file upload的临时文件将被PHP删除。 这也是php.net为file upload所描述的行为:“如果文件没有被移走或重命名,则文件将在请求结束时从临时目录中删除”,请参见: http : //php.net /manual/en/features.file-upload.post-method.php

这是,发生在引擎盖下:

该文件在upload_tmp_dir中创build。 该文件没有被PHP代码触及。 请求结束。 PHP试图删除临时文件,但访问被拒绝。

我们用procmon分析了这个。 你可以看到的是,php-cgi.exe进程看起来不像在move_uploaded_file()那样模仿删除请求​​。

解决方法:如果我们为uploaded_tmp_dir上的IIS_IUSRS组添加了修改权限,则在请求按预期结束后,该文件将被删除。

环境:在IIS 7.x上通过FCGI的PHP 5.3 / 5.4

转载于WS2012,WS2008 R2。

我正在讨论这个在PHP的错误追踪,但他们不相信我: https ://bugs.php.net/bug.php?id = 68535

我需要这个话题的一些支持。 Sombody可以重现吗? 我做错了什么。