2015-05-07 223 views
0

或者,有沒有辦法在PHP中設置系統臨時目錄(而不是上傳臨時目錄)?PHP中sys_temp_dir和upload_tmp_dir有什麼區別?

當我運行

echo sys_get_temp_dir(); 

我得到/tmp。 當我運行

ini_get('upload_tmp_dir'); 

,我感到我在我的php.ini文件中指定的目錄。無論如何改變什麼PHP用於系統臨時目錄?

我一直在我的/tmp目錄中出現隨機文件。這些以「php」爲前綴,然後有一系列隨機數字和字母。從我所知道的情況來看,這些可能是由PHP tmpfile或tempnam生成的。 httpd是在創建時使用它們的過程。他們是大量的文件,填滿我的整個/tmp分區,並把我的服務器關閉。我無法弄清楚他們來自哪裏。我可以將/tmp分區大小從500MB增加到2GB,但如果可以的話我寧願避免。

我不明白sys_get_temp_dir()是從哪裏拉/tmp。我搜索的所有東西只是告訴我要在.ini中更改upload_tmp_dir,但這些是兩個獨立的東西。

回答

0

/tmp中的文件是會話文件。 PHP默認將這些寫入磁盤。你可以看到這一點,如果你運行session_save_path

echo session_save_path(); 

然後,您可以再次運行該功能改變路徑,但它聽起來像是你有太多的會議。

您可以通過storing your sessions inside your database而不是磁盤來避免此問題。您也可以有PHP do more session cleanups

+1

我不會說 「修復」。我會說「改變」。將會話寫入磁盤並不是一個需要修復的錯誤。 – kainaw

+0

echo session_save_path()的輸出是/ var/lib/php/session。 主要問題不是這些文件的數量,而是大小。它不會經常發生,但當它發生時,它是一個超過400MB的單個文件並填充目錄。 有問題的文件被命名爲「phpa4subv」。每次發生這種情況時,文件都被命名爲php - something。自隨機生成以來,很難獲得任何信息。沒有文件擴展名。聽起來像tempnam/tmpfile會創建一些東西。 –

1

在php.ini,你應該有diferent設置這樣的:

; sys_temp_dir = "/tmp" 
; upload_tmp_dir =