我只是意识到,我已经安装在服务器上的PHP的rpm版本没有sqlite的支持(以及它有PDO的支持,但由于某种原因不起作用)
所以我作为一个PECL扩展安装,现在它显示在phpinfo()的支持,但仍然打开邀请脚本给我的错误:
调用未定义的函数sqlite_open()
我也已经重启了httpd
任何提示,我可以find一个解决scheme或指导?
删除php *包并安装等价的php53 *包 – 从RHEL / CentOS 5.6开始可用。 他们支持开箱即用的sqlite PDO。
你可以testing这个。 用内容创build一个文件/tmp/test-pdo-sqlite.php :
<?php try { $dbh=new PDO('sqlite:test.sqlite'); $version = $dbh->query('select sqlite_version()')->fetchColumn(); echo $version, "\n"; } catch (PDOException $e) { trigger_error("Error!: " . $e->getMessage(),E_USER_ERROR); } ?>
并用cd /tmp/; php test-pdo-sqlite.php运行它cd /tmp/; php test-pdo-sqlite.php cd /tmp/; php test-pdo-sqlite.php – 在我的CentOS 5上用php53得到:
3.3.6
我有以下软件包安装:
$ rpm -qa --qf='%{NAME}\n' | grep php | sort php53 php53-cli php53-common php53-gd php53-mbstring php53-mcrypt php53-mysql php53-pdo
在互联网上,您可以在Fedora Core,Red Hat和CentOS发行版上find关于PHP中sqlite支持的问题和答案。 虽然他们中的许多人在如何实现支持方面存在差异,但他们都对原因表示了同样的看法:在这些发行版上的PHP软件包是在不支持SQLite的情况下编译的(据我所知,自从Fedora以来,核心4)。 据我所知,目前没有任何RPM可以轻松安装php-sqlite3。
此外,不build议您安装用于SQLite的PECL扩展,因为已弃用且不再受支持。
也就是说,这些发行版中的PHP确实包含了对php-pdo的支持,您可以使用它来访问sqlite数据库。 主要区别是连接string(你不使用sqlite_open,而是使用一个pdostring – 例如: $db = new PDO('sqlite:/tmp/foo.db'); )。 在PHP手册中可以find使用PDO的sqlite函数列表。 我相信,如果你修改你的代码来使用这些function,而不是在php-sqlite中的function,你的问题将得到解决。
如果你需要php-sqlite的支持,并且php-pdo不起作用,你可以尝试下面的方法来重新编译php,支持php-sqlite。 从http://php.net/downloads.php下载PHP源代码,并编译支持SQLite模块。
tar xfvj php-5.3.2.tar.bz2 cd php-5.3.2/ext/sqlite/ phpize ./configure make make install /etc/init.d/httpd restart