PHP 忽略 upload_tmp_dir?

PHP 忽略 upload_tmp_dir?

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.htmlhttp://www.php.net/manual/en/features.file-upload.php

如果 PHP 仍在使用%SystemRoot%\TEMP,则使用进程监视器并检查应用程序在哪个阶段重定向到该%SystemRoot%\TEMP文件夹​​。希望这是一个简单的配置问题。

答案3

upload_tmp_dir由于应用程序池 (APPLICATION POOLS) 上的一个设置,PHP 忽略了该设置。

这不是php-cgi.exephp.ini或权限问题。

转到出现问题的网站的应用程序池:

  1. 右键点击
  2. 选择Advanced settings
  3. 滚动至LOAD USER PROFILE并将其设置为FALSE

相关内容