boa+cgi上傳文件

從網上下的開源代碼boa+cgi,移植到arm裏做個在線升級,曾以爲最難的flash擦寫先搞定了,卻卡在上傳文件這塊。問題是超過400K的文件不能上傳,連.cgi文件也沒有執行,或者執行卻失敗了(至少沒有執行到.cgi的main函數第一句)。既然小文件能上傳,那麼可以判定不是代碼的問題,何況代碼是開源下載基本沒做實質性的更改;內存也夠了,還有20多兆空間,分區雖然還是稀裏糊塗,但上傳的過程不涉及flash分區。那麼唯一的可能就是哪裏沒有配置好,
百度谷歌千百回,http://linsichengbest.blog.163.com/blog/static/1429445202012352547536/
這個比較具有代表性,就是boa默認上傳文件大小爲1M,但這裏已經改爲16M。
在/boa/defines.h裏配置上傳文件大小限制
#define SINGLE_POST_LIMIT_DEFAULT               1024 * 1024 *16/* 1 MB */

因爲通過nfs手動複製升級包到/var/(/var/掛載內存下)下面是可以的,既然終點沒有問題,那麼肯定在“過程”中出錯了,就是說這個升級包上傳的過程中經過哪裏,又回去看代碼,發現在/boa/config.c中,確定上傳過程路徑:tempdir = "/tmp";升級包要經過"/tmp",檢查文件系統發現"/tmp"掛在第八分區下,第八分區可用空間只有400K了,難怪上傳文件的最大限制爲400K。重新掛載/tmp/到內存中,這下子文件可達1M多,再試下2M、3M的文件都能上傳,但超過4M又不行了,跟之前超過400K的情況一樣,真是步步驚心。


這部分相關參考:
/etc/fstab文件詳解
http://hi.baidu.com/jingzhongchen/blog/item/8e6f552dcead7ce98b139952.html

RamFS/TmpFS文件系統
http://vicyliu1984.blog.163.com/blog/static/315412322010104113522202/

再次全面檢查,實在檢查不出來個所以然,然後就漫無目的地在文件系統裏挨個瀏覽,突然發現boa是通過mount方式運行的因爲之前爲了方便調試,將app通過軟鏈接到本地計算機中,boa是最後一個,盡然忘了改回。趕緊刪除軟鏈接,拷貝APP,重新燒寫文件系統,重啓。。。升級成功,現在最大能升級9M的文件,夠用了,夠用就好。

 

問題雖然解決了,但是還有些細節沒搞清楚:
1、這裏/var/和/tmp/都掛載內存中,但是兩者大小都是內存可用空間,奇哉怪也;
2、當boa通過nfs軟鏈接到pc端實體APP時,爲何上傳文件會有4M的大小限制,這個大小在哪裏可以配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章