BT 宝塔面板如何升级 SQLite 扩展?Laravel 11 需要 3.35.0+
部署了 Laravel 11 应用到 BT 面板,起初正常,后来发现 Cache 无法使用,报错:
SQLSTATE[HY000]: General error: 1 near "on": syntax error (Connection: sqlite, SQL: insert into "cache" ("key", "value", "expiration") values (git-log, a:69:{i:0;a:4:...
调查后发现 Laravel 要求更新的 SQLite 扩展,我的 BT 的太旧了
[root@iZuf68bhzys6m6959eh8jfZ ~]# php -i | grep -i sqlite
PDO drivers => mysql, sqlite
pdo_sqlite
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.7.17
sqlite3
SQLite3 support => enabled
SQLite Library => 3.7.17
sqlite3.extension_dir => no value => no value
我看了下 BT 上的软件管理,没有发现可以升级扩展的方法,请问有办法升级吗?如果没有简易的办法的话,就只能切换到 MySQL 了。
另外,有一点点诡异的是,Laravel 并不会检查 SQLite 的版本,并且其他的表没遇到问题,只有 Cache 有问题,而且从 Laravel 11 起,默认的 Cache 驱动是数据库,其实就是 ALL IN SQLite 了。
这是我的系统版本:
[root@iZuf68bhzys6m6959eh8jfZ ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
[root@iZuf68bhzys6m6959eh8jfZ ~]# php --version
PHP 8.2.16 (cli) (built: Apr 29 2024 18:16:30) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.16, Copyright (c) Zend Technologies
with Zend OPcache v8.2.16, Copyright (c), by Zend Technologies
[root@iZuf68bhzys6m6959eh8jfZ ~]#
我参考 vikborges.com/articles/compiling-t... 解决了。首先,到官网下 autoconf 版本;然后,本地编译 ./configure && make
,无需安装,替换 php-fpm 所用的 libsqlite3.so 库(可以备份下旧的,以防万一);最后,重启下 PHP 服务就好了。
上午在 BT 里升级了 PHP 版本,结果又遇到了这个问题,不知道为何又用回旧的 /usr/lib64/libsqlite3.so.0.8.6.backup
,通过翻看自己的问题,处理好了。提出问题、分享解决,起码对自己是有帮助。
不是sqlite问题啊,是sql语句有问题啊,on 附近
从官网下载源码编译
宝塔很多插件都不更新,前段时间gitlab网安说有漏洞,结果一看gitlab除了最新版基本都有漏洞,结果宝塔又不能升级,只能关掉 :joy:
辣鸡bt
非要用SQLite吗? 虽然Laravel11的默认数据库驱动是SQLite,但是我都习惯第一步改驱动为mysql。
宝塔php自带sqllite扩展
编译安装扩展到php.ini写下位置就可以了吧
blog.huankong.top/article/5p69qc26...