Php

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

  • August 29, 2013

我將PHP作為FCGI執行!我將upload_tmp_dir option 設置為 value /home/domain.com/tmp。執行phpinfo()複查時,確認上述設置正確。

然而,當實際上傳發生時,上傳文件會暫時進入/tmp具有權限的目錄apache:apache,當上傳完全完成時,上傳的文件才會被移動到目標目錄,該目錄設置在upload_tmp_dir. 文件移動後,它具有適當的權限,即domainowner:domainowner.

FCGI如上所述發生的事情是絕對錯誤的,並且與正在做的事情mod_phpCGI正在做的事情不同!mod_phpCGI開始直接將文件上傳到upload_tmp_dir,然後在上傳完成後重命名文件。

我對此幾乎沒有什麼擔憂,如下所示:

想像一下,如果 20 個人同時完成上傳大約 2GB 的文件會怎樣?上傳的文件必須從 移動到主目錄/tmp,給文件系統造成很多無用的負載!因此,我認為移動比重命名同一目錄中的文件更有資源?!除了/tmp掛載為ext3和 home as ext4,更糟糕的是/tmp分區是 16GB 的空間,這與我上面想像的完全是災難?

問題:

如何以與or相同的方式強制FCGI使用指令?我還沒有找到記錄的方法來更改它使用的臨時目錄。upload_tmp_dir``CGI``mod_php

請幫忙!?

這不是絕對錯誤的,fastCGI 和 mod_php/cgi 之間有很大的不同——尤其是權限的分離。使用 fastCGI,網路伺服器對 PHP 的配置方式一無所知。

我認為移動比僅重命名同一目錄中的文件更有資源?!

重命名同一目錄中的文件和移動同一文件系統中的文件幾乎沒有區別。但是,這與您在此處討論的問題無關。為了使文件從 Apache 傳輸到 PHP,它必須通過一個套接字——因此,如果 Apache 使用與 PHP 不同的路徑來儲存文件,則無關緊要。

雖然您可以破解程式碼(也可以通過 Apache 環境)以使路徑相同,但這樣做將是一個非常糟糕的主意 - 因為 PHP 會在 Apache 嘗試從中讀取文件時嘗試寫入文件。

引用自:https://serverfault.com/questions/495356