Каталог статей
Что делать, если администратор при открытии базы данных SQLite выдает сообщение «Нет поддерживаемых расширений PHP (SQLite3, PDO_SQLite)»? В этой статье представлено пошаговое руководство по изменению файла php.ini, а также установке и включению расширений pdo_sqlite и sqlite3. Перезапуск службы вступит в силу немедленно. Устранение неполадок за 1 минуту!
Последние пару дней я работаю над одним проектом, и это настолько меня расстраивает, что я почти сомневаюсь в собственном существовании.
我 在ГестияCPЯ установил 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, перейдите на веб-страницу, найдите домен, где вы установили административную панель, нажмите «Редактировать» и посмотрите поле «Версия 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 завершается. Надеюсь, это поможет вам, если вы столкнетесь с аналогичной проблемой.
Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ Статья "Adminer выдает сообщение 'Нет поддерживаемого расширения PHP'? Исправьте ошибку SQLite3/PDO_SQLite за 1 минуту", размещенная здесь, может оказаться вам полезной.
Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-34411.html
