PHP5下安装sqlite模块的小问题

今天在用pecl为PHP5编译安装sqlite模块的时候,遇到了下面这个错误而编译不过去

sqlite.c:56: error: ‘BYREF_NONE’ undeclared here (not in a function)

GOOGLE一番,原来这是个从2006年7月就存在的BUG。虽然官方在pecl.php.net的关于此bug的详情页里说已经修复了,但不止一个人在1年甚至2年后依然表示错误依旧~!看来老外干活也会偷懒啊,出了sqlite3的模块,老的sqlite模块就不维护了,哎~~

在那个页面里,也有人提供了自己修复此BUG的方法:
1,来到PHP安装目录内的bin目录下

cd /usr/local/php-5.2.3/bin

2,下载这个模块的源码

pecl download sqlite

3,解压并开始编译

$ tar zxvf SQLite-1.0.3.tgz
$ cd SQLite-1.0.3
$ ../phpize
$ ./configure –with-php-config=/usr/local/php-5.2.3/bin/php-config
$ make

4,在make的过程如报告以上错误则编辑sqlite.c文件,将下面这行注释掉

/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */

然后将下面这三行

function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, arg3_force_ref)
PHP_FE(sqlite_popen, arg3_force_ref)

改为:

function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, third_arg_force_ref)
PHP_FE(sqlite_popen, third_arg_force_ref)

5,重新编译

$ make
$ make install

将编译生成的sqlite.so文件,复制到extension_dir指定的目录中,编辑php.ini文件,加入如下一行

extension=sqlite.so

重启web服务后即可

发表评论

邮箱地址不会被公开。 必填项已用*标注