重邮东电·硬件部
2009-6-25
文件编号:
CYDD-WEBJM
受控状态:
受控
程序版本:
受控期限:
永久
起草人:
起草日期:
审核人:
审核日期:
批准人:
批准日期:
分发号:
CYDD-110303
分发日期:
密级:
机密
文档控制记录
序号
修改状态
修改
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
修改人
完成时间
V1.0
创建文档
2011-11-11
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
2文档控制记录
31、引言
52、主机web开发环境搭建
52.1、安装开发包
52.1.1安装apache-1.3.39
52.1.2安装php-4.4.8
52.2、配置httpd.conf与php.ini文件
62.2.1 配置httpd.conf
102.2.2 配置php.ini文件
102.3、联机调试
113、基于ARM11嵌入式web开发环境的搭建
113.1配置ARM11的交叉编译环境
133.2、安装开发包
133.1.1交叉编译apache-1.3.39
163.1.2交叉编译PHP
213.2、配置httpd.conf与php.ini文件
213.2.1配置httpd.conf
253.2.2配置php.ini
253.3、联机调试
294、Apache与php文件结构
294.1、Apache文件结构
304.2、PHP文件结构
1、引言
目的:本文档旨在讲述如何在ARM11平台上搭建WEB开发环境的详细过程,主要是针对嵌入式下的WEB开发环境的搭建。
对象:嵌入式WEB开发环境搭建人员、界面
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
人员、PHP库接口封装人员
参考文档:
《基于Linux下的WEB设计学习文档(20110728).doc》-
《基于ARM11 嵌入式web开发环境的搭建(20110521).doc》-
《StmAtmV3.0嵌入式WEB PHP扩展库设计(20110727).doc》-
《Tiny6410刷机指南-20110810.pdf》
文档
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
:
对主机WEB开发环境的搭建,主要有以下几个用处:
· 单独进行界面设计时,通过主机平台进行HTML、PHP开发代;主要原因:HTML、PHP语言并不依赖开发环境;
· 在ARM11嵌入式WEB开发环境下,需要依赖主机WEB开发环境中的某些编译通过后的代码;其主要原因是:交叉编译时有些代码在主机上编不过,借助主机编译通过的一些二进制文件便迎刃而解。
对基于ARM11嵌入式WEB开发环境的搭建,本文档给出每个步骤可能出现的错误提示和解决方案;如果有一些新出现的问题,可以通过网上搜索解决方法解决。
2、主机web开发环境搭建
主机WEB环境搭建需要如下开发工具:(熟悉搭建的基本原理及相关配置)
· 开发平台:Fedora + Linux 2.6
· 编译环境:gcc
· 服务器开发包:apache-1.3.39 获取方式:http://www.apache.org/
· Php开发包:php-4.4.8 获取方式:http://php.net/downloads.php
2.1、安装开发包
假设开发包apache-1.3.39与php-4.4.8已拷贝到/usr/local/目录下。其中,apache服务器安装目录/usr/local/apache_test/apache,php安装目录/usr/local/apache_test/php (对安装目录用户可自定义指定,此处只是给出参考目录)。运行以下linux命令:
[yanghong@yanghong stm_atm]$ cd /usr/local/
[yanghong@yanghonglocal]$ mkdir apache_test //创建安装目录
2.1.1安装apache-1.3.39
[yanghong@yanghong local] $tar xvf apache_1.3.39.tar.gz //解压缩安装apache开发包
[yanghong@yanghong local] $ cd apache_1.3.39
[yanghong@yanghong apache_1.3.39]$./configure --prefix=/usr/local/apache_test/apache --enable
-module=so //apache安装配置,主要是指定apache安装路径
[yanghong@yanghong apache_1.3.39]$ make
[yanghong@yanghong apache_1.3.39]$ make install
2.1.2安装php-4.4.8
[yanghong@yanghong apache_1.3.39]$cd /usr/local/
[yanghong@yanghong local]$ tar -jxvf php-4.4.8.tar.bz2 //解压缩安装php开发包
[yanghong@yanghong local]$cd php-4.4.8
[yanghong@yanghong php-4.4.8]$./configure --prefix=/usr/local/apache_test/php --with-apxs=/us/local
/apache_test/apache/bin/apxs //php安装配置,主要是指定php安装路径,并指定apache与php的依赖关系
[yanghong@yanghong php-4.4.8]$ make
[yanghong@yanghong php-4.4.8]$ make install
2.2、配置httpd.conf与php.ini文件
Apache服务器的配置工作,主要是体现在httpd.conf文件中,它将指定apache服务器的文件路径及其相互的依赖关系,以及如何与PHP解析器相关联;php的配置工作,其中在本项目中,最主要体现在php.ini文件中,指定php扩展库的路径。
注:对每次更新配置,需要重新启动服务器进程(./apachectl start)。
2.2.1 配置httpd.conf
1、打开目录 /usr/local/apache_test/apache/conf
2、打开httpd.conf文件进行如下配置:(其中1111标识为需要添加的部分)
ServerType standalone
#Root服务所在目录
ServerRoot "/usr/local/apache_test/apache"
PidFile /usr/local/apache/logs/httpd.pid
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0
#登陆服务器的端口号与用户名
Port 8080
User nobody
Group nobody
ServerAdmin yanghong_63@163.com
#网站根目录
DocumentRoot "/usr/local/apache_test/apache/htdocs"
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
UserDir public_html
#apache支持php解析
DirectoryIndex index.html
DirectoryIndex index.php
DirectoryIndex index.php3
DirectoryIndex index.phtml
AccessFileName .htaccess
Order allow,deny
Deny from all
Satisfy All
UseCanonicalName On
TypesConfig /usr/local/apache/conf/mime.types
DefaultType text/plain
MIMEMagicFile /usr/local/apache/conf/magic
HostnameLookups Off
ErrorLog /usr/local/apache/logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /usr/local/apache/logs/access_log common
ServerSignature On
Alias /icons/ "/usr/local/apache/icons/"
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
Alias /manual/ "/usr/local/apache/htdocs/manual/"
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# 指定php解析器的路径及类型
ScriptAlias /cgi-bin/ "/usr/local/apache-test/apache/cgi-bin/"
ScriptAlias /php4/ "/usr/local/apache_test/php/bin/"
# 注意 "/usr/local/apache-test/php/bin/" 中最后一个"/"不可少
AllowOverride None
Options None
Order allow,deny
Allow from all
IndexOptions FancyIndexing
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage he .he
AddCharset ISO-8859-8 .iso8859-8
AddLanguage it .it
AddLanguage ja .ja
AddCharset ISO-2022-JP .jis
AddLanguage kr .kr
AddCharset ISO-2022-KR .iso-kr
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cs .cz .cs
AddLanguage ru .ru
AddLanguage zh-TW .zh-tw
AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
AddCharset UCS-2 .ucs2
AddCharset UCS-4 .ucs4
AddCharset UTF-8 .utf8
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
AddType application/x-tar .tgz
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
Action application/x-httpd-php "/php4/php"
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
2.2.2 配置php.ini文件
把/usr/local/php-4.4.8/php.ini-dist复制到/usr/local/apache_test/php/lib,并改名为php.ini,找到
register_globals = Off
修改为
register_globals = On
保存就可以了。
2.3、联机调试
[yanghong@yanghong bin]$ ./apachectl start
[Tue May 17 11:08:49 2011] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
./apachectl start: httpd started
错误提示:需要修改httpd.conf文件中的Servername
解决方法:去掉其注释符#即可
Apache 1.3.39与PHP-4.4.8在PC机上测试已通过,且apache能解析PHP代码。其测试结果如下图所示。
3、基于ARM11嵌入式web开发环境的搭建
主机WEB环境搭建需要如下开发工具:
· 开发平台 ARM11+Linux2.6
· 交叉编译环境arm-linux-gcc //需安装交叉编译环境
· 操作系统服务器开发包 apache-1.3.39
· Php开发包 php-4.4.8
3.1配置ARM11的交叉编译环境
1、交叉编译工具包:arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz
2、配置步骤:
· [root@localhost local]# cd /tmp
· [root@localhost tmp]# tar xvf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /
· [root@localhost /]# cd /opt/FriendlyARM/toolschain/4.5.1/
· [root@localhost 4.5.1]# pwd
· 复制路径:/opt/FriendlyARM/toolschain/4.5.1
· 然后把编译器的路径加入系统环境变量:
· [root@localhost 4.5.1]# vim /root/.bashrc
· 编辑/root/.bashrc文件,在最后一行添加编译器路径:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/;如下图所示:
·
· 使环境变量生效
· root@localhost 4.5.1]# source /root/.bashrc
· [root@localhost 4.5.1]# arm-linux-gcc –v 检查编译器是否成功,出现以下界面则按照成功:
·
· 到这步就完全安装完arm-linux-gcc 交叉编译器了!
3.2、安装开发包
3.1.1交叉编译apache-1.3.39
对嵌入式web的开发需要进行交叉编译,交叉编译apache总体上需要两个步骤:
1.编译本机代码;
2.交叉编译能在ARM11上运行的APACHE和PHP。
这是因为编译apache时,需要使用本机编译生成的工具(可执行二进制文件)作为交叉编译时使用,交叉编译的工具不能在PC上运行(可执行程序的环境不同)。因此,需要借用本机编译生成的工具。
假设为本机编译的apache代码已经解压缩到/usr/local/apache-pc/apache_1.3.39,为ARM11编译的apache代码已经解压缩到/usr/local/apache-ARM11/apache_1.3.39,交叉编译器arm-linux-gcc已设缺省路径,具体步骤还是用命令来说明:
· 本机编译apache
[yanghong@yanghong local]$ cd apache-pc/apache_1.3.39
[yanghong@yanghong apache_1.3.39]$ ./configure
因为仅仅是借用本机代码,所以不用设置configure配置参数
[yanghong@yanghong apache_1.3.39]$make
· 交叉编译apache
交叉编译apache的安装位置为/usr/local/apache-ARM11/apache
[yanghong@yanghong apache_1.3.39]$ cd /usr/local/apache-ARM11/apache_1.3.39
[yanghong@yanghong apache_1.3.39]$ CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm 11/apache --enable-module=so
注1:会出来如下错误提示,因为交叉编译的生成的testfunc这个工具不能在PC上执行,可以不理会它。
错误提示:
解决方法1:(注意此处先修改Makefile的使用权限,不然修改无效)
打开/usr/local/apache-ARM11/apache_1.3.39/src/main/Makefile这个文件,找到这两段代码
uri_delims.h: gen_uri_delims
./gen_uri_delims >uri_delims.h
test_char.h: gen_test_char
./gen_test_char >test_char.h
修改为
uri_delims.h: gen_uri_delims
/usr/local/apache-pc/apache_1.3.39/src/main/gen_uri_delims >uri_delims.h
test_char.h: gen_test_char
/usr/local/apache-pc/apache_1.3.39/src/main/gen_test_char >test_char.h
这里借用了刚才编译生成的本机代码里的工具
解决方法2:
[root@localhost main]# cd /usr/local/apache-pc/apache_1.3.39/src/main
[root@localhost main]# cp gen_test_char gen_uri_delims
/usr/local/apache-arm11/apache_1.3.39/src/main
接下来执行:
[yanghong@yanghongapache_1.3.39]$make
出现以下错误:
解决办法:
根据提示找到arm-linux-gcc相关文件下的getline
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
所在地方,进行必要的注释,保证APACHE部分的getline函数处能够成功编译通过。
Apache-1.3.39已编译好,下面是安装。
[yanghong@yanghong apache_1.3.39] make install
这样apache的文件就被安装到PC上的/usr/local/apache-arm11/apache文件夹下面了,安装成功结果如下图:
3.1.2交叉编译PHP
交叉编译php同样需要两个步骤:
1.编译本机代码;
2.利用本机代码进行交叉编译;
原因不再重复,假设为本机编译的php代码已经解压缩到/usr/local/apache-pc/php-4.4.8,为ARM11编译的php代码已经解压缩到/usr/local/apache-ARM11/php-4.4.8,交叉编译器arm-linux-gcc已设缺省路径,具体步骤还是用命令来说明:
· 本机编译php-4.4.8
[yanghong@yanghong php-4.4.8]$ cd /usr/local/apache-pc/php-4.4.8
[yanghong@yanghong php-4.4.8]$ ./configure
[yanghong@yanghong php-4.4.8]$ make
· 交叉编译php
[yanghong@yanghong php-4.4.8]$ cd /usr/local/apache-ARM11/php-4.4.8
[yanghong@yanghong php-4.4.8]$CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm11/php --with-apxs=/usr/local/apache-arm11/apache/bin/apxs
提示错误1:
解决方法1:打开脚本/usr/local/apache-ARM11/php-4.4.8/configure,搜索“checking for Apache 1.x module support via DS0 through APXS”进行如下代码的注释。
继续配置:
[yanghong@yanghong php-4.4.8]$CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm11/php --with-apxs=/usr/local/apache-arm11/apache/bin/apxs
错误提示2:
打开/usr/local/apache-ARM11/php-4.4.8/configure文件,搜索“can not run test program while cross compiling”,会搜索到很多个这样的结果:
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
把它们都改为
{ echo "configure: error: can not run test program while cross compiling" 1>&2; }
这样做的目的是直接无视交叉编译测试程序错误。
接下来进行编译:
[yanghong@yanghong php-4.4.8]$ make
错误提示3:
此处会依次报出好几个缺少头文件的错误,经过仔细寻找,终于发现在/usr/local/apache-arm11/apache/include目录下。
解决办法:3:
根据错误提示,找到相关文件错误的位置,修改提示缺少文件出的绝对路径位置。
编译通过后,会出现以下界面,表示编译完成:
最后进行安装php:
[yanghong@yanghong php-4.4.8]$make install
错误提示4:(此处原因不详,解决办法其实是试出来的)
解决办法4:(居然用最先测试时候搭建的apache目录下得httpd可以在此处通过)
[root@localhost bin]# cd /usr/local/apache_test/apache/bin
[root@localhost bin]# cp httpd /usr/local/apache-arm11/apache/bin/
cp:是否覆盖“/usr/local/apache-arm11/apache/bin/httpd”? y
继续:make install
错误提示5:
解决方法5:
打开/usr/local/apache-arm11/php-4.4.8/Makefile,找到这段
install-pear-packages: $(top_builddir)/sapi/cli/php
@$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) /usr/local/apache-ARM11/
php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /usr/local/apache-ARM11/php-4.4.8/
pear/packages/*.tar
利用刚本机编译的php文件,修改代码为
install-pear-packages: /usr/local/apache-pc/php-4.4.8/sapi/cli/php
@/usr/local/apache-pc/php-4.4.8/sapi/cli/php $(PEAR_INSTALL_FLAGS) /usr/local/
php-ARM11/php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /usr/local/
php-ARM11/php-4.4.8/pear/packages/*.tar
继续安装:
[yanghong@yanghong php-4.4.8]$make install
出现以下界面安装成功:
3.2、配置httpd.conf与php.ini文件
需要修改配置文件,让apache和php能够链接起来工作。因为我不是把apache和php一起编译的,需要让apache认识“.php”这个扩展名,然后调用php。
3.2.1配置httpd.conf
执行命令[yanghong@yanghong php-4.4.8]$cd /usr/local/apache-arm11/apache/conf
打开目录/usr/local/apache-arm11/apache/conf配置文件httpd.conf,并将其修改为:
ServerType standalone
#Root服务所在目录
ServerRoot "/usr/local/apache-arm11/apache"
PidFile /usr/local/apache/logs/httpd.pid
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0
Port 8080
User nobody
Group nobody
ServerAdmin yanghong_63@163.com
#网站根目录
DocumentRoot "/usr/local/apache-arm11/apache/htdocs"
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
UserDir public_html
DirectoryIndex index.html
DirectoryIndex index.php
DirectoryIndex index.php3
DirectoryIndex index.phtml
AccessFileName .htaccess
Order allow,deny
Deny from all
Satisfy All
UseCanonicalName On
TypesConfig /usr/local/apache/conf/mime.types
DefaultType text/plain
MIMEMagicFile /usr/local/apache/conf/magic
HostnameLookups Off
ErrorLog /usr/local/apache/logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /usr/local/apache/logs/access_log common
ServerSignature On
Alias /icons/ "/usr/local/apache/icons/"
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
Alias /manual/ "/usr/local/apache/htdocs/manual/"
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
ScriptAlias /php4/ "/usr/local/apache-arm11/php/bin/"
# 注意 "/usr/local/apache-arm11/php/bin/" 中最后一个"/"不可少
# LoadModule foo_module libexec/mod_foo.so
LoadModule php4_module libexec/libphp4.so
AllowOverride None
Options None
Order allow,deny
Allow from all
IndexOptions FancyIndexing
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage he .he
AddCharset ISO-8859-8 .iso8859-8
AddLanguage it .it
AddLanguage ja .ja
AddCharset ISO-2022-JP .jis
AddLanguage kr .kr
AddCharset ISO-2022-KR .iso-kr
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cs .cz .cs
AddLanguage ru .ru
AddLanguage zh-TW .zh-tw
AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
AddCharset UCS-2 .ucs2
AddCharset UCS-4 .ucs4
AddCharset UTF-8 .utf8
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
AddType application/x-tar .tgz
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
Action application/x-httpd-php "/php4/php"
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
3.2.2配置php.ini
将/usr/local/apache-ARM11/php-4.4.8/php.ini-dist复制到/usr/
local/apache-arm11/php/lib,并改名为php.ini,找到
register_globals = Off
修改为
register_globals = On
3.3、联机调试
第一步:将搭配好的apache和php打包:
[root@localhost local]# tar cjvf apache-arm11.tar.bz2 apache-arm11
第二步:通过U盘或者SD卡:
拷贝至已经移植好操作系统的ARM11开发板的对应文件夹下(/usr/local/),已经移植好得操作系统能够支持USB和SD卡驱动读写了,具体的ARM11如何移植操作系统详见《Tiny6410刷机指南-20110810.pdf》
第三步:然后通过串口调试,切换至开发板终端文件目录下:
[root@FriendlyARM /udisk]# cd /usr/local/
[root@FriendlyARM local]# tar xvf apache-arm11.tar.bz2 //解压文件夹
[root@FriendlyARM bin]# cd /apache-arm11/apache/bin/
[root@FriendlyARM bin]# ./apachectl start
提示出现以下错误:
(此问题相关解决的方法原理不清楚,只是根据错误提示修改)
错误提示:可执行文件httpd运行时,可能会出现一个比较常见的问题: httpd: bad user name nobody。
解决方法:根据错误提示,修改源代码。
通过 id nobody 先找到nobody用户的uid、gid、groups
找到提示这个错误的位置是: /usr/local/apache-ARM11/apache_1.3.39/src/main/
util.c
API_EXPORT(uid_t) ap_uname2id(const char *name)
{
#if defined(WIN32) || defined(NETWARE)
return (1);
#else
struct passwd *ent;
if (name[0] == '#')
return (atoi(&name[1]));
if (!(ent = getpwnam(name))) {
fprintf(stderr, "%s: %s\n", ap_server_argv0, name);
exit(1);
}
return (ent->pw_uid);
#endif
}
搜索getpwnam函数,/os/win32目录下的passwd.c找到该函数,由源码可知:此函数在不定义为WIN32时是不会被编译的(参见/os/win32/passwd.c),将上面的代码修改为:
API_EXPORT(uid_t) ap_uname2id(const char *name)
{
#if defined(WIN32) || defined(NETWARE)
return (1);
#else
struct passwd *ent;
static struct passwd pw;
if (name[0] == '#')
return (atoi(&name[1]));
if (!(ent = &pw)) {
// if (!(ent = getpwnam(name))) {
fprintf(stderr, "%s: bad user name %s\n", ap_server_argv0, name);
exit(1);
}
ent->pw_uid = 99;
return (ent->pw_uid);
#endif
}
同理,代码 ap_gname2id按照上面的方法修改为:
API_EXPORT(gid_t) ap_gname2id(const char *name)
{
#if defined(WIN32) || defined(NETWARE)
return (1);
#else
struct group *ent;
static struct group gr;
if (name[0] == '#')
return (atoi(&name[1]));
// if (!(ent = getgrnam(name))) {
if (!(ent = &gr)) {
fprintf(stderr, "%s: bad group name %s\n", ap_server_argv0, name);
exit(1);
}
ent->gr_gid = 99;
return (ent->gr_gid);
#endif
}
注:uid和gid必须和你新增的用户nobody的uid和gid保持一致,笔者此处uid=99、gid=99(此值用户可以根据需要自行设定)。经运行测试,一般是先创建nobody用户,再安装apache,否则无法识别用户nobody。
有关nobody用户的命令说明:adduser、useradd、id nobody
尽管这个方法治标不治本,但如果你不需要在nobody之外的其他用户使用,这个方法值得一试。
然后再回到:/usr/local/apache-arm11/apache_1.3.39目录下,从新编译、安装apache即可。
第四步:然后重复上述步骤重新打包,通过U盘或者SD卡转存到根文件系统目录下,从新运行即可。
最后,通过/etc/init.d/rcS文档可以把apache设置为开机启动……
测试成功界面如下:
4、Apache与php文件结构
本章节主要是对NFS文件系统下的apache服务器、php解析器各文件目录的介绍及使用。对文件结构的理解,有助于我们对整个web开发过程中,各子页面文件的布局。
4.1、Apache文件结构
Apache服务器的主要文件结构如图4-1-1所示。
图 4-1-1 apache服务器文件结构
以下部分对各子目录进行详细的说明:
· bin文件夹中存放可执行文件,我们主要关注的为脚本apachectl、可执行文件httpd以及apxs。
· cgi-bin文件夹中存放*.cgi文件,浏览器会到此文件夹找到相应的*.cgi代码执行。也就是说,我们进行cgi程序代码的开发时,应将不同功能模块(功能与HTTP界面关联)放到cgi-bin文件夹下自定义相应的目录下。在httpd.conf文件中,我们已配置其支持cgi功能。
· conf文件夹中存放配置文件,其中有我们非常关注的httpd.conf
· htdocs文件夹中存放开发的*.htm与*.php文件。在此文件夹中,我们需要根据HTTP界面的功能模块建立相应的子目录,这样有利于我们的开发,对子目录的建立此处不作介绍,可参考相关文档。
· icons文件夹中主要是一些静态图片,用来构造页面。
· include文件夹中存放一些系统头文件*.h。
· libexec文件夹中存放共享库*.so
· logs文件夹中存放如下文件,其主要文件如图4-1-2所示。
图 4-1-2 logs文件结构
其中,error_log为错误日记文件,在apache服务器出现报错时,均可到此文件下查找相应的原因,方便问题的解决。
4.2、PHP文件结构
Php解析器文件结构如图4-2-1所示。
图 4-2-1 php文件结构
· bin文件夹中存放可执行文件,我们主要关注的可执行文件php。
· include文件夹中存放一些php依赖模块的头文件*.h。
· lib文件夹中存放共享库。
· man文件夹为help帮助文档。
由此可见,对php文件夹,我们不需要进行相关的操作。在apache服务器中的httpd.conf配置文件中已经指定了依赖可执行文件php的目录,apache会自动加载php执行文件对*.php代码进行解析。
基于ARM11嵌入式WEB开发环境的搭建
©版权所有 不得复制
术有限公司书面许可,任何人不得复制或泄露这些信息给其他未经授权的人。
北京沃泰丰通信技术有限公司
第 2 页 共 1页