boa+php 嵌入式,boa 0.94.13 在嵌入式平台的安装与配置

2023-05-16

第一步:从www.boa.org下载Boa源码,将其解压并进入源码目录的src子目录。

# tar xzf boa-0.94.13.tar.gz

# cd boa-0.94.13/src

生成Makefile文件

# ./configure

修改Makefile文件,找到CC=gcc和CPP=gcc

-E,分别将其改为交叉编译器安装的路径CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc和CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc

-E并保存退出。

然后运行make进行编译,得到可执行程序boa

# make

# /opt/host/armv4l/bin/armv4l-unknown-linux-strip boa

boa编译问题总结

1.编译出现parse.h找不到,就在boa-0.94.13下

ln -s src/parse.h parse.h

2.编译器出现pasting“t”and“->”does not give a valid preprocessing token这个错误

经过修改src/compat.h

找到

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

修改成

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

这是另一种改法,不过没用过,我用第一种

找到time_offset = IMEZONE_OFFSET(t);改成time_offset = 0;

这时你就可以用tftp  -g -r boaip放入开发板中

Tftp -p -l boaip在开发板中将板中的文件发给主机

第二步:Boa的配置。

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

49行Group nogroup修改成Group 0

62行ErrorLog /app/web/log/error_log改路径这个很重要,大部分的提示都在这里一定要有,不然有错误也找不到

74行AccessLog /app/web/log/access_log改路径要是没改即使运行了boa运行不了,也没有任何提示,要在error_log中找

94行ServerName www.plm5k.com去掉“#”号

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。

111行DocumentRoot /app/web/html放网页的地方

155行MimeTypes /app/web/conf/mime.types将主机上的"/etc/mime.types"放到指定目录中

193行ScriptAlias /cgi-bin/ /app/web/cgi-bin/将后面的路径改为所要指定的目录

(可以将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制到、/app/web/html目录下)

第三步:测试

1.静态HTML网页

在目标板上运行boa程序,将主机与目标机的ip设成同一网段,然后打开任一个浏览器(linux或window下都可),输入目标板的ip地址(http://10.10.10.2)即可打开/var/www/index.html网页

./boa -c /app/web/conf指定boa.conf的配置文档

测试:写了一个很简单的cgi helloworld.c

#include

int main(void)

{

printf("Content-type: text/html\n\n");//据说是固定格式

printf("\n");

printf("

CGI Output\n");

printf("

\n");

printf("

Hello,world.

\n");

printf("

\n");

printf("\n");

exit(0);

}

用arm-linux-gcc编译成helloworld.cgi,放在嵌入式的扳子下面

能够直接执行,即./helloworld.cgi结果正确

但是在pc机上的浏览器里面不能正确浏览,提示错误:

502BadGateway

TheCGIwas notCGI/1.1compliant.

原因:权限问题boa运行的用户与你shell所在的用户非同一用户,

请用chmoda+rx让所有用户都执行权限试下.

同时请修改下boa对CGI支持的缺陷,见:

http://bbs.chinaunix.net/viewthread.php?tid=824840

最后:

如果要将运行用户为root则还要改, 首先在boa.conf中

48行User nobody改为User root

如果这样重新运行boa则会邮错,请看error_log中的提示

src/boa.c:226 - icky Linux kernel bug!: Success

在linux中很少以root用户作为应用程的运行者,一般的应用程序也会禁止认root作为程序的运行者

所以在boa.c的225行中有

if (setuid(0) != -1)

{

DIE("icky Linux kernel bug!");

}

只要将其注释掉即可

posted on 2008-03-24 10:51 苏艺伟 阅读(3113) 评论(0)  编辑 收藏 引用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boa+php 嵌入式,boa 0.94.13 在嵌入式平台的安装与配置 的相关文章

随机推荐