Каталог артыкулаў
Што рабіць, калі адміністратар адлюстроўвае паведамленне «Няма даступных падтрымоўваных пашырэнняў PHP (SQLite3, PDO_SQLite)» пры адкрыцці базы дадзеных SQLite? Гэты артыкул змяшчае пакрокавае кіраўніцтва па змяненні php.ini, а таксама ўсталёўцы і ўключэнні пашырэнняў pdo_sqlite і sqlite3. Перазапуск службы ўступіць у сілу неадкладна. Лёгкае выпраўленне праблем за 1 хвіліну!
Апошнія пару дзён я над чымсьці працую, і гэта настолькі раздражняе, што я амаль сумняваюся ў сваім існаванні.
我在HestiaCPЯ ўсталяваў Adminer, гэты лёгкі інструмент для кіравання базамі дадзеных, і хацеў выкарыстоўваць яго для кіравання маёй базай дадзеных SQLite. Але калі я адкрыў старонку, з'явілася ўсплывальнае паведамленне чырвоным тэкстам: «Няма даступных падтрымоўваных пашырэнняў PHP (SQLite3, PDO_SQLite)».

Я быў ашаломлены.
Што гэта значыць? У мяне ўсталяваны SQLite і працуе PHP. Чаму пашырэнне недаступнае?
Шчыра кажучы, спачатку я думаў, што праблема ў самой адміністрацыйнай частцы, таму некалькі разоў перазапускаў службу і нават пераўсталёўваў яе, але праблема не знікла. Пазней я зразумеў, што гэта не мае ніякага дачынення да адміністрацыйнай часткі; праблема вынікала з распаўсюджанай памылкі, у якую трапляюць многія пачаткоўцы.
Праблемы з пашырэннямі, выкліканыя шматверсійным механізмам PHP HestiaCP
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, перайдзіце на вэб-старонку, знайдзіце дамен, на якім вы ўсталявалі Admin, націсніце «Рэдагаваць» і паглядзіце на поле «Версія PHP вэб-сервера». Паказаны там нумар правільны. Гэта можа быць 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Калі вынік утрымліваеpdo_sqliteальбоsqlite3Гэта азначае, што ўстаноўка прайшла паспяхова. Цяпер абнавіце старонку адміністратара ў браўзеры, і чырвонае папераджальнае паведамленне павінна знікнуць.
Вось так я крок за крокам усё зразумеў, ад першапачатковай думкі «Што гэта?» да пазнейшага ўсведамлення «О, я разумею», і па дарозе я зрабіў нямала адхіленняў. Галоўная праблема была ў тым, што шматверсійны PHP-дызайн HestiaCP сапраўды быў схільны да памылак; калі вы не былі знаёмыя з яго логікай, можна было лёгка збіцца з правільнага шляху з самага першага кроку.
Некаторыя могуць спытаць, навошта рабіць HestiaCP такім складаным? Ці не маглі б мы проста выкарыстоўваць адну, уніфікаваную версію PHP? Дызайн мае сэнс; розныя вэб-сайты могуць абапірацца на розныя функцыі PHP, і прымусовае выкарыстанне адзінай версіі можа выклікаць праблемы сумяшчальнасці. Аднак гэты механізм сапраўды не вельмі зручны для пачаткоўцаў, і гэта не асабліва падкрэсліваецца ў дакументацыі.
З майго ўласнага досведу я разумею, што пры выкарыстанні такіх панэляў, як HestiaCP, трэба спачатку высветліць, да якой версіі PHP прывязаны ваш сайт. Незалежна ад таго, усталёўваеце вы пашырэнні, змяняеце канфігурацыі ці вырашаеце праблемы, гэты нумар версіі з'яўляецца найважнейшым адпраўным пунктам. Часта тое, што вы лічыце праблемай з пэўным сэрвісам, насамрэч з'яўляецца проста неадпаведнасцю версій.
Як апісаць гэтае пачуццё? Быццам вы вядзеце машыну ў рамонт, а механік кажа, што ў іх няма патрэбнай запчасткі. Аказваецца, яна ёсць, але вы пайшлі не ў тую майстэрню, і вам трэба ехаць у суседнюю. Гэта гучыць трохі недарэчна, але на самой справе гэта так.
Добра, на гэтым я завяршаю свой досвед вырашэння памылкі адміністратара на HestiaCP. Спадзяюся, гэта дапаможа вам, калі вы сутыкнецеся з падобнай праблемай.
Блог Hope Chen Weiliang ( https://www.chenweiliang.com/ Артыкул «Адміністратар паведамляе «Няма даступнага падтрымоўванага пашырэння PHP? Выпраўце памылку SQLite3/PDO_SQLite за 1 хвіліну», які апублікаваны тут, можа быць вам карысным.
Запрашаем падзяліцца спасылкай на гэты артыкул:https://www.chenweiliang.com/cwl-34411.html
