2010-06-29 54 views
0

當我們調用返回的tempnam一個額外的路徑前綴

$tmpFilename = tempnam(SIEFREPOSITORY, 'Sief'); 

返回

/export/sief/share/htdocs/siefvalidator_prod/sieflog/SiefMVNtuW 

SIEFREPOSITORY是

/share/htdocs/siefvalidator_prod/sieflog/SiefMVNtuW 

爲什麼會增加額外的/導出/ SIEF前綴?

回答

0

這是因爲/ share符號鏈接到/ export/sief/share,後來的php版本從tempnam()返回絕對路徑,它給了我符號鏈接的目標[/ export/...]。

它對我造成問題,因爲它不在open_basedir。

0

這樣看來,所述SIEFREPOSITORY路徑不可寫,不存在或以其它方式不可用,在這種情況下tempnam回落到其他路徑,如在documenation解釋:

創建一個文件用唯一的文件名,訪問權限設置爲0600,在指定的目錄中。 如果該目錄不存在,tempnam()可能會在系統的臨時目錄中生成一個文件,並返回該文件的名稱。

如果PHP不能創建在指定的目錄參數文件,它倒在系統默認值。在NTFS上,如果指定的目錄包含超過65534個文件,也會發生這種情況。

檢查是否有什麼地方不對的路徑,並有通過上述鏈接網站的評論一看,大約有超過tempnam獲得更多控制一些花絮。

+0

謝謝。我發現了這個問題。這是因爲符號鏈接和tempnam()現在返回絕對路徑。 – Fakrudeen 2010-06-29 09:03:52