我将 PHP 作为 FCGI 运行!我将upload_tmp_dir
选项设置为值/home/domain.com/tmp
。执行phpinfo()
进行复核时,确认上述设置正确无误。
然而,当实际上传时,上传文件暂时转到/tmp
目录,权限为apache:apache
,当上传完全 时,上传的文件正被移动到目标目录,该目录在upload_tmp_dir
中设置。移动文件后,它具有正确的权限,domainowner:domainowner
。
如上所述,FCGI
发生的事情绝对是错误的,与mod_php
或CGI
正在做的事情有所不同! mod_php
和CGI
只需开始将文件直接上传到upload_tmp_dir
,然后在上传完成后再重命名文件。< / p>
我对此的关注很少,如下:
想象一下,如果20个人同时完成上传大约2GB的文件会怎么样?上传的文件必须从/tmp
移动到主目录,在文件系统上创建大量无用的负载!因此,我认为移动更有资源,而不仅仅是在同一目录中重命名文件?!除了/tmp
安装为ext3
,主页安装为ext4
,更糟糕的是/tmp
分区是16GB的空间,这是我上面想象的完全灾难?
问题:
如何强制FCGI
使用upload_tmp_dir
指令的方式与CGI
或mod_php
相同?我没有找到一个记录的方法来更改它使用的临时目录。
请帮忙!?
答案 0 :(得分:0)
bugs.php.net讨论了这个问题。可能的解决方案是您需要在任何父目录上设置读取属性到tmp
文件夹所在的位置,以使其工作。这可能是一种安全风险。
我建议在tmp
设置 chmod 777 中为/home/tmp
和home
tmp
答案 1 :(得分:-1)
This thread表示可能是由于安全级别设置造成的。如果是'medium',那么FCGI默认为系统默认值。
不确定它引用的是什么设置,因为它指的是桌面安装。我会做一些挖掘。