当通过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可以重现吗? 我做错了什么。