2011-06-03 104 views
0

我已經使用函數move_uploaded_file移動已完成的上傳。我注意到這不符合目標目錄的setgid位,並且具有該文件原來的內容。 (我瞭解到這是Linux行爲)。PHPs move_uploaded_file不尊重setgid

什麼是解決問題的好方法?我曾考慮將文件加載到PHP並保存,但文件可能相當大,爲50MB +,這意味着更多的PHP內存使用。

+0

你可以嘗試使用'shell_exec'調用shell腳本形式的php來調用移動。如果你想讓它成爲web服務gid,那麼不用mv,而是在shell腳本中做一個'cat',並將它寫入一個新文件,然後'解除鏈接'舊文件。如果你想要一個不同的,你需要做一個'su -',但這可能需要更多的工作。 – 2011-06-03 21:23:26

回答

1

您可能會也可能不會訪問system調用,但system("cp")甚至明確chgrp可能會做你想做的,只要服從setgid位。如果目標目錄不同於目標目錄,則可能需要進行一些調查以獲取現有組。

0

嘗試構建在rename而不是move_uploaded_file()中的PHP。

+0

我無法重命名以尊重setgid。 – 2013-02-09 12:47:54

0

我在13年初回到了這個問題,並用copy替換move_uploaded_file來修復它。 我並不瞭解實際的性能和內存影響,但似乎並不相關。