错误1:
bison -y -d boa_grammar.y
gcc -g -O2 -pipe -Wall -I.
-c-o y.tab.o y.tab.c
y.tab.c: In function ‘yyparse’:
y.tab.c:1295: warning: implicit declaration of function‘yylex’
lex boa_lexer.l
make: lex: Command not found
make: *** [lex.yy.c] Error 127
解决办法:由于没有flex,出现了缺少lex.yy.c文件的报错。只要安装上flex即可。
$ sudo apt-get install flex
错误2:
request.c: In function ‘get_request’:
request.c:84: warning: pointer targets in passing argument 3 of‘accept’ differ in signedness
gcc -g -O2 -pipe -Wall -I.
-c-o response.o response.c
gcc -g -O2 -pipe -Wall -I.
-c-o select.o select.c
gcc -g -O2 -pipe -Wall -I.
-c-o signals.o signals.c
gcc -g -O2 -pipe -Wall -I.
-c-o util.o util.c
util.c:100:1: error: pasting "t" and "->" does notgive a valid preprocessing token
make: *** [util.o] Error 1
解决办法:根据提示修改源码中的src/compat.h文件。
修改:#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff
为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
bison -y -d boa_grammar.y
gcc -g -O2 -pipe -Wall -I.
y.tab.c: In function ‘yyparse’:
y.tab.c:1295: warning: implicit declaration of function‘yylex’
lex boa_lexer.l
make: lex: Command not found
make: *** [lex.yy.c] Error 127
解决办法:由于没有flex,出现了缺少lex.yy.c文件的报错。只要安装上flex即可。
$ sudo apt-get install flex
错误2:
request.c: In function ‘get_request’:
request.c:84: warning: pointer targets in passing argument 3 of‘accept’ differ in signedness
gcc -g -O2 -pipe -Wall -I.
gcc -g -O2 -pipe -Wall -I.
gcc -g -O2 -pipe -Wall -I.
gcc -g -O2 -pipe -Wall -I.
util.c:100:1: error: pasting "t" and "->" does notgive a valid preprocessing token
make: *** [util.o] Error 1
解决办法:根据提示修改源码中的src/compat.h文件。
修改:#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff
为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
错误3: log.c:73 unable to dup2 the error log:bad filedescriptor
修改 src/log.c
找到:if (dup2(error_log, STDERR_FILENO) == -1)
{ DIE("unable to dup2 the error log");}
修改为:
修改 src/log.c
找到:if (dup2(error_log, STDERR_FILENO) == -1)
{ DIE("unable to dup2 the error log");}
修改为:
错误4:Could not open boa.conf for reading这个是因为根目录定义好了后,启动boa就要去这个根目录下读取boa.confmime.types,因此根目录下必须有这两个文件。
错误5:boa.c:226 - icky Linux kernel bug!: Success这是从log/boa/error_log中读到的。在cgi中使用root权限时出现。
注意:配置文件中要给ROOT权限,注释以下代码是允许ROOT权限访问BOA。
注释掉下面语句:
在那些文件拷贝过程中,要注意拷贝到/bin,/var/www/cgi-bin下后,文件权限需要做修改,用sudo chmod 755文件名,这时才可用。
错误6:打开网页时,网页中的图片无法显示
将存放图片的子目录修改成/var/www/img即可 或者修改boa中图片解析的路径
错误7:在测试cgi脚本时,浏览输出下述错误:
502 Bad Gateway
The CGI was not CGI/1.1 compliant
解决方法:注意CGI程序符合HTML文件格式,结尾处'\n'等细节问题,这类错误不好调试。
502 Bad Gateway
The CGI was not CGI/1.1 compliant
解决方法:注意CGI程序符合HTML文件格式,结尾处'\n'等细节问题,这类错误不好调试。
错误8:boa.c:211 - getpwuid: No such file or directory
修改src/boa.c
找到:if (passwdbuf == NULL) { DIE(”getpwuid”);}
if (initGroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1)
{ DIE(”initgroups”);}
修改为:
#if 0
if (passwdbuf == NULL) { DIE(”getpwuid”);}
if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1)
{ DIE(”initgroups”);}
#endif
修改src/boa.c
找到:if (passwdbuf == NULL) { DIE(”getpwuid”);}
if (initGroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1)
{ DIE(”initgroups”);}
修改为:
#if 0
if (passwdbuf == NULL) { DIE(”getpwuid”);}
if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1)
{ DIE(”initgroups”);}
#endif
错误9:当运行./boa时出现Cannot open /var/log/boa/access_log forlogging: logfile open: No such file or director的提示。
出现这个提示是因为,在/var/log文件夹下没有boa文件夹,所以在该目录下建立一个boa就ok。建立方法: mkdir/var/log/boa。
出现这个提示是因为,在/var/log文件夹下没有boa文件夹,所以在该目录下建立一个boa就ok。建立方法: mkdir/var/log/boa。
(路径根据boa.conf路径填)。