前段時間在作C/S模式下的視頻監控,這段時間是B/S模式下的。期間遇到了很多問題,有些問題一卡就是幾天,有些問題的解決辦法在辦法在網上也不是很好找,因此還有些問題雖然獲得了臨時解決,可是其原理如今我本人也還搞的不是很清楚,在這裏也但願有你們的指點交流。如今我就將這些錯誤稍做總結,可供你們學習借鑑,同時也但願獲得你們的指點指正。
若還有錯誤代碼,本人解決後會陸續補充。C/S下的錯誤彙總也會不久上傳。
1.必需要在板子的/etc下建一個boa目錄(錯誤代碼忘了)
2.」can't open boa.conf for reading「
解決:不只要在你本身放置boa的目錄下放入boa.conf配置文件,並且要在板子的/etc/boa下也要放入boa.conf文件,這樣系統在運行boa的時候才能夠讀取到boa.conf文件。
3.「unable to dup2 the error log bad file descriptor」
解決:在boa源碼裏,即src文件夾下把log.c中的第73行的if語句註釋掉。
4."unable to dup2 the error log:Bad file descriptor"
解決:在boa.conf裏,把「#AccessLog /var/log/boa/access_log」註釋掉(即去掉#號)。
5.「[01/Jan/2031:00:12:25 +0000] boa.c:226 - icky Linux kernel bug!: No such file or directory」
解決:在boa源碼裏,即src文件夾下把boa.c中的第226行的if語句註釋掉。
6."gethostbyname:: Resource temporarily unavailable"
解決:把「#ServerName www.your.org.here」的「#」號去掉。
7."./boa: 1: syntax error: "(" unexpected"
解決:沒有修改Makefile,是用gcc編譯的,應該改爲是arm-linux-gcc編譯。
8.若是頁面上是:「502 Bad Gateway The CGI was not CGI/1.1 compliant.「
解決:給你要執行的cgi可執行程序賦個權限。chmod 777 filename
9.在<form action="cgi-bin/test2.cgi" method="get">中,cgi可執行程序的路徑就直接寫「cgi-bin/test2.cgi」就能夠了,不要寫板子上的絕對路徑,這樣就重複了,由於cgi執行時會自動去boa.conf的指定的路徑裏找。
10.出現警告:「control reaches end of non-void function」,是由於某個函數沒有return,而函數定義時是非void型的。因此須要有個返回值。好比int cgiMain()這個函數就必定要有個返回值的,不然會報這個錯誤。
12.運行網頁時老出現錯誤:「mkstemp:No such file or diectory」
解決:不能用post,只能用get。由於post方式須要新建一個臨時文件,這就須要用到mkstemp函數。這個函數是在系統中以惟一的文件名建立一個文件並打開,且只有當前用戶才能訪問這個臨時文件。故權限不夠,或其餘什麼問題都會報這個錯誤。那麼就用get吧!這裏具體緣由細節筆者暫時也不是很清楚...
13.直接寫的含有system()函數的c程序用arm-linux-gcc編譯到板子上的能夠執行,而若是寫在cgi中的就不必定能執行了。由於牽涉到一個cgi的權限的問題。即便給你的cgi-bin文件夾下的全部cgi可執行文件都賦了權限,也不必定能執行。
解決辦法就是看看你的boa.conf中的權限設置的如何。這裏正確的應該是把「User nobody Group nogroup」改成「User root Group 0」,不然不能正確執行!你會發現你的cgi可執行程序的其餘代碼都執行了,卻只有這個system()函數沒有執行!linux