2012-07-26 59 views
0

我使用Resumable.js庫上傳的1個MB塊的文件,然後拼湊他們重新走到一起使用32位Linux服務器上的PHP(PHP 5.3.14,阿帕奇2.0 )附加文件大塊到2GB的文件使用PHP

這是工作很好,除了超過2GB的文件。

當我上傳的文件大於2GB,它似乎做工精細,但是當你真正查看文件屬性的大小始終是2147483648個字節。

從我讀書,我明白這是PHP的使用32位整數的限制。

我已閱讀,設置CFLAGS =「 - D_FILE_OFFSET_BITS = 64」標誌,並重新編譯PHP將讓PHP打開大於2GB的文件。

我的問題是,如果我這樣做,將在解決我的問題,或者是打開文件的不只是這個問題,但該文件的追加呢?

如果這將解決我的問題2GB,還會出現有(高)的理論最大文件大小?

如果我完全關閉基地,該標誌將不解決我的問題,有沒有除了切換到64位服務器的任何其他可能的解決方案?

+1

哪個文件系統?通常PHP不會遇到大文件的問題(即使我會推薦你​​使用64位系統),因此我想這是對所用文件系統的限制。 – KingCrunch 2012-07-26 19:54:19

回答

1

你停留在2GB的文件大小限制的Linux在32位機器(見http://linuxmafia.com/faq/VALinux-kb/2gb-filesize-limit.html)。

你可能要考慮保持總文件分割成一些較小尺寸的塊,或者得到一個64位的機器。通常情況下,爲了達到性能目的,通常會在塊實現上避免大於GB的文件。

+0

嗯...嗯,我能夠通過FTP上傳大於2GB的文件.... 對不起,我想我是在32位基於這樣的事實,我知道一個32位版本的假設Linux操作系統的PHP被安裝。 如果是32位或64位,我必須讓我的客戶端驗證他的共享主機。 由於我可以通過FTP上傳超過2GB的文件,這似乎表明我已經安裝了32位版本的PHP的64位操作系統? – user1555774 2012-07-27 00:39:03

+0

這是非常可能的 - 我曾經遇到過一個Redhat服務器的問題,即使機器是64位,它也帶有許多軟件的32位版本。 – Pyrce 2012-07-27 16:33:48

+0

仍然在等待以確定服務器是32位還是64位,但我們假設它是64位操作系統(因爲我可以通過FTP上傳大於2GB的文件),並使用32位PHP版本。你認爲設置CFLAGS =「 - D_FILE_OFFSET_BITS = 64」標誌並重新編譯PHP會解決我的問題,還是需要安裝64位版本的PHP? – user1555774 2012-07-27 16:51:45