(筆記)Linux下的CGI和BOA使用期間遇到的問題匯總


前段時間在做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()函數沒有執行!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM