L'administrador em pregunta "No hi ha extensions PHP compatibles disponibles"? Resol els errors SQLite3/PDO_SQLite en 1 minut.

Què cal fer quan l'administrador mostra el missatge "No hi ha extensions PHP compatibles disponibles (SQLite3, PDO_SQLite)" en obrir la base de dades SQLite? Aquest article proporciona una guia pas a pas sobre com modificar php.ini i instal·lar i habilitar les extensions pdo_sqlite i sqlite3. Reiniciar el servei tindrà efecte immediatament. Resolució de problemes fàcil en 1 minut!

He estat treballant en alguna cosa durant els darrers dos dies, i ha estat tan frustrant que gairebé em qüestiono la meva existència.

Vaig instal·lar l'Adminer a HestiaCP , l'eina lleugera de gestió de bases de dades, amb l'esperança de poder-lo utilitzar per gestionar una base de dades SQLite. Tanmateix, quan vaig obrir la pàgina, va aparèixer un missatge emergent en text vermell que deia: "No hi ha extensions PHP compatibles disponibles (SQLite3, PDO_SQLite)".

L'administrador em pregunta "No hi ha extensions PHP compatibles disponibles"? Resol els errors SQLite3/PDO_SQLite en 1 minut.

Vaig quedar bocabadat.

Què vol dir això? Tinc SQLite instal·lat i PHP s'està executant. Per què l'extensió no està disponible?

Si he de ser sincer, inicialment vaig pensar que era un problema amb l'administració en si, així que vaig reiniciar el servei diverses vegades i fins i tot el vaig reinstal·lar, però el problema va persistir. Més tard, em vaig adonar que no tenia res a veure amb l'administració; el problema provenia d'un error comú en què cauen molts principiants.

Problemes d'extensió causats pel mecanisme PHP multiversió de HestiaCP

HestiaCP admet diverses versions de PHP executant-se simultàniament.

Això vol dir que podeu instal·lar PHP 7.4, 8.0, 8.1, 8.2 i 8.3 al vostre servidor simultàniament, i diferents llocs web poden estar vinculats a diferents versions de PHP. Sembla força avançat, oi? Però aquí teniu el problema: quan escriviu directament...php -mQuan comproveu el mòdul, aquest utilitza la versió predeterminada de PHP del sistema, que pot ser completament diferent de la versió realment vinculada al vostre lloc web.

He passat molta estona buscant i he descobert que el meu lloc web està vinculat a PHP 8.2, però el terminal mostra 8.1. No és estrany que no pugui trobar el mòdul sqlite.

Aquesta sensació és tan absurda. És com anar a un restaurant a demanar menjar i el cambrer et diu que el plat no està disponible. Però resulta que no està disponible, simplement has anat a la persona equivocada. Has de parlar amb la cuina perquè funcioni.

Com determinar la versió de PHP que utilitza un lloc web

Així doncs, la solució és senzilla: primer, heu d'esbrinar quina versió de PHP utilitza el vostre lloc web i, a continuació, instal·lar les extensions corresponents.

El primer pas és determinar quina versió de PHP utilitza el vostre lloc web.

Inicieu la sessió al backend d'HestiaCP, aneu a la pàgina web, cerqueu el domini on heu instal·lat l'Admin, feu clic a Edita i mireu el camp Versió PHP del servidor web. El número que es mostra és el correcte. Podria ser 8.1, 8.2 o 8.3; primer heu de confirmar aquest número.

Molta gent se salta aquest pas, pensant que no importa, ja que tot és PHP de totes maneres. Però realment importa; si els números de versió no coincideixen, instal·lar més extensions no servirà de res.

Instal·leu la versió corresponent de l'extensió SQLite.

El segon pas és instal·lar la versió corresponent de l'extensió SQLite.

Un cop sàpigues el número de versió, pots instal·lar-la directament amb el gestor de paquets del sistema. Suposant que el teu lloc web utilitza PHP 8.2, aleshores:

apt update
apt install php8.2-sqlite3 -y

Si el vostre lloc web utilitza la versió 8.1 o 8.3, només cal que canvieu el número de versió.

Si he de ser sincer, no estava segur de quina versió tenia, així que només vaig instal·lar les més comunes:

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

D'aquesta manera, pot cobrir qualsevol versió, estalviant-vos temps i esforç.

Reinicieu el servei PHP-FPM perquè l'extensió tingui efecte.

El tercer pas és reiniciar el servei PHP-FPM.

Aquest és un pas que molta gent passa per alt. Després d'instal·lar l'extensió, actualitzen immediatament la pàgina, però tot i així continuen rebent un error. No és que l'extensió no s'hagi instal·lat; és que no heu reiniciat el procés PHP-FPM corresponent i l'extensió recentment instal·lada encara no s'ha carregat.

Ordre de reinici:

systemctl restart php8.2-fpm
systemctl restart nginx

Podeu canviar el número de versió segons la vostra situació real.

Verifiqueu que l'extensió SQLite s'ha instal·lat correctament.

El quart pas és verificar-ho.

Podeu especificar una ruta de versió de PHP específica per comprovar:

php8.2 -m | grep -i sqlite

Si la sortida contépdo_sqliteosqlite3Això vol dir que la instal·lació s'ha dut a terme correctament. Ara, actualitzeu la pàgina de l'administrador al navegador i el missatge d'advertència vermell hauria de desaparèixer.

Així és com ho vaig anar descobrint pas a pas, des que inicialment vaig pensar "Què és això?" fins que més tard em vaig adonar de "Ah, ja ho veig", i vaig fer força desviacions pel camí. El principal problema era que el disseny PHP multiversió de HestiaCP era, efectivament, propens a errors; si no estaves familiaritzat amb la seva lògica, era fàcil desviar-se des del primer pas.

Alguns es podrien preguntar, per què fer que HestiaCP sigui tan complicat? No podríem utilitzar una única versió unificada de PHP? El disseny té sentit; diferents llocs web poden dependre de diferents funcions de PHP, i forçar una versió uniforme podria causar problemes de compatibilitat. Tanmateix, aquest mecanisme no és gaire fàcil d'utilitzar per a principiants, i no s'emfatitza especialment a la documentació.

La meva pròpia experiència és que quan s'utilitzen panells com HestiaCP, cal desenvolupar l'hàbit d'esbrinar primer a quina versió de PHP està vinculat el lloc web. Tant si s'instal·la extensions, es canvien configuracions o es resolen problemes, aquest número de versió és el punt de partida més crucial. Moltes vegades, el que es pensa que és un problema amb un determinat servei és en realitat només una discrepància de versió.

Com descriure la sensació? És com si portessis el cotxe a reparar-lo i el mecànic et digués que no tenen la peça. Resulta que sí que la tenen, però has anat al taller equivocat i has d'anar al del costat. Sona una mica absurd, però realment és així.

D'acord, això conclou la meva experiència compartida sobre la resolució de l'error d'administrador a HestiaCP. Espero que us pugui ajudar si teniu el mateix problema.

发表 评论

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

Tornar a dalt