apachephp-4.4.8sqlitejson开发环境搭建.doc_第1页
apachephp-4.4.8sqlitejson开发环境搭建.doc_第2页
apachephp-4.4.8sqlitejson开发环境搭建.doc_第3页
apachephp-4.4.8sqlitejson开发环境搭建.doc_第4页
apachephp-4.4.8sqlitejson开发环境搭建.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录文档控制记录II1.引言12. 开始搭建22.1 sqlite简介22.2 搭建步骤4搭建php4搭建sqlite4搭建php动态扩展库sqlite3-0.55搭建JSON格式化数据json1.2.153 .测试和几个应注意的问题53、1终端状态下进行测试:53、2用C代码进行测试:test.c73、3用php进行测试:test.php101.引言目的:本文档旨指导apache+php+sqlite3开发环境的搭建,需要源码apache_1.3.39、php-4.48、sqlite-3.3.8以及php关于sqlite3动态扩展库sqlite3-0.5,尤其是最后的那个动态扩展库,对于php第5版本以下必需要这个库才能访问sqlite。对象:嵌入式WEB开发人员。参考文档:sqlite+php for arm.htm SQLite移植ARM2410.html fedora10下SQLite的移植.html sqlite的移植.html基于ARM11的PHP动态扩展库环境的搭建.doc基于S3c6410的WEB开发环境的搭建.doc2. 开始搭建2.1 sqlite简介SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几 百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java 等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括:ATTACH DATABASE BEGIN TRANSACTION comment COMMIT TRANSACTION COPY CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW DELETE DETACH DATABASE DROP INDEX DROP TABLE DROP TRIGGER DROP VIEW END TRANSACTION EXPLAIN expression INSERT ON CONFLICT clause PRAGMA REPLACE ROLLBACK TRANSACTION SELECT UPDATE 同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有 点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开 发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最新版本是 3.2.2,它的官方网站是:或者,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士下面是访问SQLite官方网站: / 时第一眼看到关于SQLite的特性. 1. ACID事务 2. 零配置 无需安装和管理配置 3. 储存在单一磁盘文件中的一个完整的数据库 4. 数据库文件可以在不同字节顺序的机器间自由的共享 5. 支持数据库大小至2TB 6. 足够小, 大致3万行C代码, 250K 7. 比一些流行的数据库在大部分普通数据库操作要快 8. 简单, 轻松的API 9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定 10. 良好注释的源代码, 并且有着90%以上的测试覆盖率 11. 独立: 没有额外依赖 12. Source完全的Open, 你可以用于任何用途, 包括出售它 13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python2.2 搭建步骤由于先前已经搭建好apache+php+mysql的开发环境,但是mysql所占用的cpu资源和内存资源过大,移植到arm11上以后效果并不是很理想,所以重新动手搭建apache+php+sqlite的开发环境,对于apache+php的开发环境,可以参照基于S3c6410的WEB开发环境的搭建.doc,这里不再说明!1、 准备好php-4.48、sqlite和动态扩展库包sqlite3-0.5,主要搭建php,sqlite;至于apache,我们不需要去改变它,由于要跟新的开发板对接,此处必须采用arm-linux-gcc4.3.2版本。搭建php2.1、采用以前搭建好的apache+php开发环境下的php-4.48,从而避免又去重新配置php的相关文件,当然也可以直接下载一个php-4.48源码包,从头来搭建,对于可能遇到的问题及解决办法,详见基于S3c6410的WEB开发环境的搭建.doc.2.2、终端输入:CC=arm-linux-gcc ./configure -prefix=/usr/local/apache-arm11/php -with-apxs=/usr/local/apache-arm11/apache/bin/apxs -enable-pdo=shared -with-sqlite=shared -with-pdo-sqlite=shared -with-zlib -host=arm-linux -enable-track-vars -with-xml,如果配置configure文件出现问题,具体办法可参考基于S3c6410的WEB开发环境的搭建.doc和sqlite+php for arm.htm。2、3、由于修改了configure文件,对于后期由于要装载动态库,固我们要修改configure生成的Makefile文件,在Makefile文件开头添加:LDFLAGS += -ldl,方便后期能够链接动态库!其他两个地方main/php.h和ext/standard/dl.c此处不需要修改,如果是从头搭建,请参考基于S3c6410的WEB开发环境的搭建.doc。2、4终端输入:make。2、5终端输入:make install.搭建sqlite3、1配置CC=arm-linux-gcc ./configure -prefix=/usr/local/apache-arm11/sqlite -host=arm-linux。 3、2终端下:make、make install。搭建php动态扩展库sqlite3-0.54、1 unzip & untar the package。4、2 run phpize。4、3 run ./configure -with-php-config=/usr/local/apache-arm11/php/bin/php-config -with-sqlite3=/path/to/your/sqlite3/install”.4、4 make & make install4、5 (optionally) copy DB/sqlite3.php to /path/to/php/lib/php/DB/sqlite3.php。4、6拷贝libsqlite3.so.0.8.6 到/usr/lib目录下并创建两个链接libsqlite3.so、libsqlite3.so.04、6拷贝sqlite3到/usr/bin目录下最后将搭建好的apache+php+sqlite开发环境包压缩并下载到开发板上进行测试操作,后面会附上两个测试程序和几个主要问题。搭建JSON格式化数据json1.2.15、1配置CC=arm-linux-gcc ./configure -with-php-config=/usr/local/apache-arm11/php/bin/php-config -host=arm-linux5、2 make & make install5、3 php程序开头处加上dl(json.so);3 .测试和几个应注意的问题3、1终端状态下进行测试:1、进入到sqlite/bin目录下,运行sqlite3.2、创建表3、删除表sqlite drop table studentssqlite .tablessqlite 4、查看表结构sqlite create table students(id integer,name text,age integer);sqlite .schema studentsCREATE TABLE students(id integer,name text,age integer);sqlite5、插入列sqlite alter table students add cul;sqlite alter table students add column sex text;sqlite .schema studentsCREATE TABLE students(id integer,name text,age integer, cul, sex text);sqlite6、插入表记录sqlite insert into students values(1,aa,10,0,m);sqlite insert into students values(2,bb,11,1,f);sqlite select * from students;1|aa|10|0|m2|bb|11|1|fsqlite7、重命名表sqlite alter table students rename to stu;sqlite8、删除某一列,这为列culsqlite begin transaction;sqlite create temporary table stu_bak(id integer,name text,age integer,sex text);sqlite insert into stu_bak select id,name,age,sex from stu;sqlite drop table stu;sqlite create table stu(id integer,name text,age integer,sex text);sqlite insert into stu select id,name,age,sex from stu_bak;sqlite drop table stu_bak;sqlite select * from stu;1|aa|10|m2|bb|11|fsqlite commit;sqlite 9、退出程序sqlite .quit3、2用C代码进行测试:test.c#include #include #include /usr/local/apache-arm11/sqlite/include/sqlite3.h /绝对路径static int callback(void *NotUsed, int argc, char *argv, char *azColName) int i; for(i=0; iargc;i+) printf(%s = %sn, azColNamei, argv i); printf(n); return 0;int main(int argc, char *argv) sqlite3 *db; char *zErrMsg = 0; int rc; if( argc!=3 ) fprintf(stderr, Usage: %s DATABASE SQL-STATEMENTn, argv0); rc = sqlite3_open(argv1, &db); if( rc ) fprintf(stderr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); rc = sqlite3_exec(db, argv2, callback, 0, &zErrMsg); if( rc!=SQLITE_OK ) fprintf(stderr, SQL error: %sn, zErrMsg); sqlite3_close(db); return 0;使用如下命令编译测试程序:交叉编译时采用arm-linux-gcc -I /(安装路径)/include -L/(安装路径)/lib -o target src -lsqlite3终端下:arm-linux-gcc -o test test.c -lsqlite3 -L /usr/local/apache-arm11/sqlite/lib/ -I /usr/local/apache-arm11/sqlite/include/执行时会出现这个错误,这是因为执行时默认去系统的lib库中寻找libsqlite3.so.0,所以这里要把libsqlite3.so.0.8.6拷贝到系统下的lib下,并作libsqlite3.so和libsqlite3.so.0的两个链接。对于/lib/和/usr/lib/以后有时间可以研究一下他们之间的区别。再执行:C语言测试成功!3、3用php进行测试:test.php?phpdl(sqlite3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论