FCGI 和 upload_tmp_dir PHP 指令无法正常工作

FCGI 和 upload_tmp_dir PHP 指令无法正常工作

我跑PHP作为纤维增强玻璃!我将upload_tmp_dir 选项设置为值/home/domain.com/tmp。执行phpinfo()复查后确认以上设置正确。

尽管如此,在实际上传时,上传文件会暂时进入/tmp具有权限的目录apache:apache,并且当上传完全完成时仅有的然后上传的文件将被移动到目标目录,该目录在 中设置upload_tmp_dir。文件移动后,恰当的权限domainowner:domainowner

FCGI如上所述发生的事情是绝对错误的,mod_phpCGI正在做的事情不同!mod_php然后 CGI开始上传文件直接地然后upload_tmp_dir改名上传完成后的文件。

我对此有以下几点重大担忧:

想象一下,如果有 20 个人同时上传了一个大约 2GB 的文件,会发生什么?上传的文件必须从 移动到主目录/tmp,这会在文件系统上产生大量无用的负载!因此,我认为移动比仅仅重命名同一目录中的文件更有资源?!此外,/tmp被安装为ext3并且主目录为ext4更糟糕的是,该/tmp分区有 16GB 的空间,这与我上面想象的完全不同,简直是一场灾难?

问题:

如何强制以与或相同的方式FCGI使用指令?我还没有找到记录的方法来更改它使用的临时目录。upload_tmp_dirCGImod_php

请帮忙!?

答案1

这并不是完全错误,fastCGI 和 mod_php/cgi 之间存在很大差异 - 尤其是权限分离。使用 fastCGI,Web 服务器对 PHP 的配置方式一无所知。

我认为移动比仅仅重命名同一目录中的文件更有用?!

在同一目录中重命名文件和在同一文件系统内移动文件之间几乎没有区别。但是,这与您在此处讨论的问题无关。为了将文件从 Apache 传输到 PHP,它必须通过套接字 - 因此,如果 Apache 使用与 PHP 不同的路径来存储文件,则无关紧要。

虽然你可以修改代码(也可能通过 Apache 环境实现)来使路径相同,但这样做会非常这是一个坏主意 —— 因为当 Apache 尝试读取文件时,PHP 会尝试写入文件。

答案2

只是一个想法,但是您是否尝试将 TMPDIR=/home/domain.com/tmp 传递给 httpd 环境,以便 mod_fcgid 使用该目录而不是 /tmp 来存储文件?

相关内容