LS,
我正在使用带有 PHP(FastCGI)的 IIS7。
我将 upload_tmp_dir 设置为“X:\Temp”而不是将其留空,但由于某种原因它仍然使用“C:\Windows\Temp”。
我确实授予了以下用户全部权限:NETWORK SERVICE、(应用程序池用户)、IIS_IUSRS。更改后我还重新启动了 IIS。
我尝试使用 PHP 在正确的临时路径内创建一个目录,并且确实有效,所以这不是一个安全问题。
亲切的问候,
马蒂亚斯·万斯
答案1
查找下面的设置Fopen 包装器部分也是如此。
在我安装的 PHP 中,我发现了另一个upload_tmp_dir潜伏在那里,因为它是在设置之后指定的,所以优先于文件上传
我怀疑新的 Windows(.msi)PHP 安装的安装过程的一部分试图表现得有点太聪明,在安装时从系统环境变量中创建这些设置,而不是询问您。
简而言之,在 PHP 文件中查找重复的 upload_tmp_dir 条目并将其删除。
HTH 刘易斯
答案2
抱歉,我没有正确理解您的问题。
如果 PHP 要使用系统环境变量来存储 TEMP 或 TMP,那么它将指向%SystemRoot%\TEMP
。但如果 PHP.ini 中有任何变量可以配置并指向临时文件的自定义文件夹,那么授予权限应该可以。查看此内容http://phpsec.org/projects/phpsecinfo/tests/upload_tmp_dir.html和 http://www.php.net/manual/en/features.file-upload.php
如果 PHP 仍在使用%SystemRoot%\TEMP
,则使用进程监视器并检查应用程序在哪个阶段重定向到该%SystemRoot%\TEMP
文件夹。希望这是一个简单的配置问题。
答案3
upload_tmp_dir
由于应用程序池 (APPLICATION POOLS) 上的一个设置,PHP 忽略了该设置。
这不是php-cgi.exe
、php.ini
或权限问题。
转到出现问题的网站的应用程序池:
- 右键点击
- 选择
Advanced settings
- 滚动至
LOAD USER PROFILE
并将其设置为FALSE
。