Администратор выдает сообщение "Нет поддерживаемых расширений PHP"? Решите ошибки SQLite3/PDO_SQLite за 1 минуту.

Что делать, если администратор при открытии базы данных SQLite выдает сообщение «Нет поддерживаемых расширений PHP (SQLite3, PDO_SQLite)»? В этой статье представлено пошаговое руководство по изменению файла php.ini, а также установке и включению расширений pdo_sqlite и sqlite3. Перезапуск службы вступит в силу немедленно. Устранение неполадок за 1 минуту!

Последние пару дней я работаю над одним проектом, и это настолько меня расстраивает, что я почти сомневаюсь в собственном существовании.

我 在ГестияCPЯ установил Adminer, этот легковесный инструмент для управления базами данных, и хотел использовать его для управления своей базой данных SQLite. Но когда я открыл страницу, появилось всплывающее сообщение красным текстом: «Нет поддерживаемых расширений PHP (SQLite3, PDO_SQLite)».

Администратор выдает сообщение "Нет поддерживаемых расширений PHP"? Решите ошибки SQLite3/PDO_SQLite за 1 минуту.

Я был ошеломлён.

Что это значит? У меня установлен 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

Чтобы раскрыть еще больше скрытых трюков🔑, присоединяйтесь к нашему каналу в Telegram!

Поделитесь и поставьте лайк, если вам понравилось! Ваши репосты и лайки — наша постоянная мотивация!

 

发表 评论

Ваш адрес электронной почты не будет опубликован. 必填 项 已 用 * 标注

Каталог статей
Наверх