Administrator prijavljuje poruku "Nema dostupnih podržanih PHP ekstenzija"? Riješite greške SQLite3/PDO_SQLite za 1 minutu.

Adminer 打开 SQLite 数据库提示“没有支持的 PHP 扩展可用(SQLite3, PDO_SQLite)”怎么办?本文手把手教你修改 php.ini 并安装开启 pdo_sqlite 与 sqlite3 扩展,重启服务即刻生效。1分钟轻松排除故障!

这两天在折腾一个东西,折腾得我差点怀疑人生。

ja sam ovdjeHestiaCP上装了Adminer,就是那个轻量级的数据库管理工具,想用它来管理SQLite数据库。结果打开页面一看,直接给我弹了一行红字,说什么「没有支持的 PHP 扩展可用(SQLite3, PDO_SQLite)」。

Administrator prijavljuje poruku "Nema dostupnih podržanih PHP ekstenzija"? Riješite greške SQLite3/PDO_SQLite za 1 minutu.

Bio sam zapanjen.

这啥意思?我SQLite不是装了吗?PHP不是跑着呢吗?怎么就扩展不可用了?

说实话,我一开始以为是Adminer本身的问题,重启了好几次服务,甚至重装了一遍,结果还是那样。后来我才搞明白,这事儿跟Adminer没半毛钱关系,问题出在一个很多新手都会踩的坑上。

HestiaCP多版本PHP机制导致的扩展问题

HestiaCP这玩意,它支持多版本PHP并存。

就是说,你服务器上可以同时装PHP 7.4、8.0、8.1、8.2、8.3,然后不同的网站可以绑定不同版本的PHP。听起来挺高级的对吧,但问题来了,当你在终端里直接敲php -m去查模块的时候,它用的是系统默认的那个PHP版本,可能跟你网站实际绑定的版本根本不是一回事。

我查了老半天,发现我的网站绑定的是PHP 8.2,但我终端里查的是8.1,难怪查不到sqlite模块呢。

这种感觉太离谱了,就像你去餐厅点菜,服务员告诉你这道菜没有,结果不是没有,是你找错人了,你得跟后厨说才管用。

如何确认网站使用的PHP版本

所以这事儿的解决思路很简单,你得先搞清楚你的网站到底用的是哪个版本的PHP,然后针对性地去装对应的扩展。

第一步,确认你站点用的是哪个PHP版本。

登录HestiaCP后台,进Web页面,找到你装Adminer的那个域名,点编辑,看Web Server PHP Version那一栏,上面写的是几就是几。可能是8.1,可能是8.2,也可能是8.3,反正你得先确认这个数字。

这一步很多人会跳过,觉得无所谓,反正都是PHP。但真的有所谓,版本号对不上,你装再多扩展也白搭。

安装对应版本的SQLite扩展

第二步,安装对应版本的SQLite扩展。

知道版本号之后,直接用系统包管理器装就行。假设你的站点用的是PHP 8.2,那就:

apt update
apt install php8.2-sqlite3 -y

如果你的站点用的是8.1或者8.3,就把版本号改一下就行。

说实话我也不确定自己到底是哪个版本,干脆把常见的几个都装了一遍:

apt install php8.1-sqlite3 php8.2-sqlite3 php8.3-sqlite3 -y

这样不管哪个版本都能覆盖到,省心。

重启PHP-FPM服务使扩展生效

第三步,重启PHP-FPM服务。

这一步是很多人会忽略的,装完扩展就直接去刷新页面了,结果还是报错。不是扩展没装上,是你没重启对应的PHP-FPM进程,新装的扩展还没加载进去。

重启命令:

systemctl restart php8.2-fpm
systemctl restart nginx

版本号根据你实际情况改就行。

验证SQLite扩展是否安装成功

第四步,验证一下。

你可以指定具体的PHP版本路径来检查:

php8.2 -m | grep -i sqlite

Ako izlaz sadržipdo_sqliteilisqlite3,那就说明装成功了。这时候再去浏览器刷新Adminer页面,那个红字提示就消失了。

我当时就是这样一步步搞下来的,从一开始的「这啥玩意」到后来的「原来是这样」,中间走了不少弯路。主要是HestiaCP这个多版本PHP的设计,确实容易让人踩坑,如果你不熟悉这套逻辑,很容易在第一步就走歪了。

可能有小伙伴会问,为什么HestiaCP要搞这么复杂,不能就用一个统一的PHP版本吗?其实这个设计是有道理的,不同网站可能依赖不同版本的PHP特性,强制统一版本反而会出兼容性问题。只是这个机制对新手来说,确实不太友好,文档里也没怎么特别强调。

我自己的感受是,用HestiaCP这类面板的时候,一定要养成一个习惯,就是先搞清楚你的网站到底绑定的是哪个PHP版本。不管是装扩展、改配置还是排查问题,这个版本号都是最关键的起点。很多时候你以为是某个服务出了问题,其实就是版本没对上。

这种感觉怎么说呢,就像你去修车,修车师傅说这零件没有,结果不是没有,是你找错了修理厂,得去隔壁那家才有。听起来有点蠢,但真的就是这么回事。

好了,以上就是我在HestiaCP上解决Adminer报错的经验分享,希望能帮到遇到同样问题的你。

Komentari

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Oznaka

Article Directory
Dođite na vrh