Обновление веб-сервера с 14.04 до 20.04 ( не может загрузить веб-страницу ошибка: Невозможно загрузить драйвер базы данных: mysqli)

Мне очень нужна помощь, я просто хочу сначала сказать, что я новичок с веб-сервером. Мой босс просил меня обновить наш веб-сервер до последней версии Ubuntu 20.04 LTS, как старый был запущен с 14.04. Я установил дистрибутив и LAMP стек на рабочем столе, как я хотел бы попробовать сначала с моим собственным компьютером, прежде чем прикасаться к серверу. Я установил Apache2, PHP 7.4.3 и mySQL 8.0, однако версии, запущенные на старом сервере - это PHP 5.x и MySQL 5.x. Я скопировал все файлы из /var/www/, а конфигурационные файлы Apache из /etc/apache2, затем создал дамп SQL и переместился в новую базу данных mysql (я проследил, чтобы разрешения были одинаковы со старым сервером). Однако каждый раз, когда я открываю localhost в браузере, я вижу это сообщение об ошибке:

Database Error: Unable to load Database Driver: mysqli

Update: Ошибка базы данных была отсортирована по шагам, предоставленным Матиго ниже.

Вот моя новая ситуация, я все еще не могу получить доступ к своему сайту как localhost, т.к. он показывает только слово "Error"

Журнал ошибок говорит:

Не удалось прочитать данные сессии: user (путь: /var/lib/php/sessions) в /var/www/kssp/libraries/joomla/session/handler/native.php на линии 194

Я очень ценю помощь ребят!

btw так выглядит dir сессии: не уверен, нужно ли мне делать chmod для этого.

drwxr-xr-x 3 корневой корень 4096 февраля 8 модулей 22:55 drwx-wx-wt 2 корневых 4096 Mar 27 2020 сессий

Проблема решена:

Шаги выполнены:

  • Удаление - переустановка LAMP сервера
  • Проверено, если все php-модули были включены
  • Создана mysql резервная копия базы данных со старого сервера
  • Воссоздана mysql база данных на новом сервере
  • Воссоздана база данных, пользователь перешел на новый сервер и убедился, что она совпадает - Разрешено переопределение всех на Apache2. conf
  • Включенный модуль перезаписи

Теперь все на сайте выглядит точно так же, как и на моем локальном хосте/сервере.

Далее нужно сопоставить ip-адрес и указать запись A.

Я счастлив, что все улажено, спасибо Матиго за то, что просветил меня шагами.

0
задан 20 February 2021 в 10:23

1 ответ

Из-за постоянной ошибки проблема (на мой взгляд) сводится к одному из нескольких случаев:

  1. php-mysql не установлен или является неправильной версией для PHP 7.4
  2. Вспомогательный пакет php-mysqlnd не установлен (обычно он поставляется с php-mysql , поэтому не требует внимания)
  3. Apache не был перезапущен после обновления PHP
  4. Расширение mysqli закомментировано в его ini файле

Итак, давайте проведем небольшое тестирование путем создания фиктивного файла PHP в корневом веб-каталоге, который вызывает функцию phpinfo () ция:

  1. Открыть терминал (если он еще не открыт)
  2. Создайте фиктивный файл PHP в корневом веб-каталоге:
     sudo vi /var/www/testing.php
     
    Примечания:
    Вы можете использовать любой другой редактор, который вам больше нравится. Использование vi больше касается мышечной памяти, чем неявной поддержки редактора.
    Не забудьте изменить / var / www на фактическое корневое расположение документа для http: // localhost
  3. Вставьте это в новый файл: {{1} }
      
     
  4. Сохраните файл
  5. Откройте браузер и зайдите в http: //localhost/testing.php .Это должно дать вам информационную страницу PHP, которая выглядит примерно так: PHP Information
  6. Прокрутите вниз (или используйте функцию поиска), чтобы найти раздел с названием mysqli . Это должно выглядеть примерно так: PHP Info - MySQLi

А теперь самое интересное.

Если вы видите пустую страницу при посещении testing.php ...
⇢ PHP настроен неправильно. Для простоты удалите и переустановите:

sudo apt install --reinstall php libapache2-mod-php php-mysql

Затем перезапустите Apache:

sudo service apache2 restart

Если вы видите страницу информации о PHP, но ничего для mysqli ...
mysqli либо не установлен или настроен неправильно.

  • Убедитесь, что mysqli для PHP 7.4 установлен, открыв терминал (или используя текущий) и набрав sudo apt install php7.4-mysql (Обратите внимание, что мы специально здесь вызывается пакет для 7.4. В этом нет необходимости, но мы хотим быть на 100% уверены, что это правильная версия для вашей установки PHP)

    Если все установлено правильно, вы увидите такое сообщение:

     Чтение списков пакетов ... Готово 
    Построение дерева зависимостей 
    Чтение информации о состоянии ... Готово 
    php7.4-mysql уже является последней версией (7.4.3-4ubuntu2.4 ). 
    0 для обновления, 0 для новой установки, 0 для удаления и 2 для отказа от обновления. 
     
  • Убедитесь, что файл mysqli.ini существует и настроен правильно, открыв терминал (или используя тот, который в настоящее время открыт), перейдя в каталог conf.d для PHP и Apache и перечислив файлы, связанные с MySQL:

     cd /etc/php/7.4 / apache2 / conf.d 
    ll * mysql * 
     

    Вы должны увидеть что-то вроде этого:

     lrwxrwxrwx 1 root root 39 5 月 9 2020 10-mysqlnd.ini -> /etc/php/7.4 /mods-available/mysqlnd.ini
    lrwxrwxrwx 1 root root 38 5 月 9 2020 20-mysqli.ini -> /etc/php/7.4/mods-available/mysqli.ini
    lrwxrwxrwx 1 root root 41 5 月 9 2020 20-pdo_mysql.ini -> /etc/php/7.4/mods-available/pdo_mysql.ini
    

    Если вы не видите эти файлы, то php- mysql был установлен неправильно. Попробуем еще раз:

     sudo apt install --reinstall php-mysql 
     

    Откройте файл 20-mysqli.ini и убедитесь, что содержимое файла соответствует этому:

    ; конфигурация для модуля php mysql 
    ; priority = 20 
    extension = mysqli.so 
     

    Перезапустите Apache:

     sudo service apache2 restart 
     

    Если все совпадает, откройте mysqlnd. ini файл. Этот файл должен быть загружен перед mysqli , поэтому он, вероятно, будет иметь префикс 10- в каталоге. Убедитесь, что перед строкой extension = mysqlnd.so нет ; .

Если все до сих пор соответствовало вашей конфигурации ...
⇢ Проблема, скорее всего, в самом коде приложения и, возможно, потребуется изучить разработчик, знакомый с системой, чтобы внести изменения, необходимые для работы с стек новых технологий.

Я редко вижу, чтобы установка Apache требовала стольких усилий, если только вы не переносите что-то с действительно непонятными требованиями. Большинство стеков LAMP до боли просты, так как многие люди сделали инструменты намного проще в использовании за последнее десятилетие или около того.

Надеюсь, что-то здесь поможет вам решить проблему.

0
ответ дан 18 March 2021 в 23:34

Другие вопросы по тегам:

Похожие вопросы: