codeigniter使用sqlite数据库
[| 2010/09/24 16:35]
今天做邮件转发程序的web页面,要读取配置数据库,由于配置数据库使用的是sqlite,所以要用php读取sqlite。
php使用sqlite有两种方式,一种是pdo驱动,一种是用php_sqlite模块。
首先试了试php_sqlite模块,结果发现centos没有这个模块,下了一个试着编译了一下,乱七八糟,这个方法太不普适。放弃。
然后使用pdo方法。用$test=new PDO('sqlite:test.db'),获得pdo连接后,可以使用了。
然后要在codeigniter里使用sqlite数据库,所以查了下文档,原来codeigniter 1.7.*集成的sqlite模块不支持sqlite3,而为了对php4的兼容性,没有包含pdo模块。还好官网有pdo驱动,按说明下载、配置好后发现报“SQLSTATE[HY000] [14] unable to open database file”这个错误。折腾了一下午。发现直接用:php test.php可以打开数据库,但是用web服务器就不行。看来要么是权限问题,要么是配置文件的不同。用两种方式打印了phpinfo,发现没有什么问题。疑惑了好长时间。。
突然想起来,数据库所在的目录树中有一层是没有给web服务器访问权限的。。怪不得,把权限放开,正常了。
php使用sqlite有两种方式,一种是pdo驱动,一种是用php_sqlite模块。
首先试了试php_sqlite模块,结果发现centos没有这个模块,下了一个试着编译了一下,乱七八糟,这个方法太不普适。放弃。
然后使用pdo方法。用$test=new PDO('sqlite:test.db'),获得pdo连接后,可以使用了。
然后要在codeigniter里使用sqlite数据库,所以查了下文档,原来codeigniter 1.7.*集成的sqlite模块不支持sqlite3,而为了对php4的兼容性,没有包含pdo模块。还好官网有pdo驱动,按说明下载、配置好后发现报“SQLSTATE[HY000] [14] unable to open database file”这个错误。折腾了一下午。发现直接用:php test.php可以打开数据库,但是用web服务器就不行。看来要么是权限问题,要么是配置文件的不同。用两种方式打印了phpinfo,发现没有什么问题。疑惑了好长时间。。
突然想起来,数据库所在的目录树中有一层是没有给web服务器访问权限的。。怪不得,把权限放开,正常了。
Anoymous
2010/11/14 13:35
注:sqlite不但需要对数据库文件有写权限,对存放该文件的目录也要有写权限才能写入成功
分页: 1/1 1