Мне очень нужна помощь, я просто хочу сначала сказать, что я новичок с веб-сервером. Мой босс просил меня обновить наш веб-сервер до последней версии 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 сессий
Проблема решена:
Шаги выполнены:
Теперь все на сайте выглядит точно так же, как и на моем локальном хосте/сервере.
Далее нужно сопоставить ip-адрес и указать запись A.
Я счастлив, что все улажено, спасибо Матиго за то, что просветил меня шагами.
Из-за постоянной ошибки проблема (на мой взгляд) сводится к одному из нескольких случаев:
php-mysql
не установлен или является неправильной версией для PHP 7.4 php-mysqlnd
не установлен (обычно он поставляется с php-mysql
, поэтому не требует внимания) mysqli
закомментировано в его ini
файле Итак, давайте проведем небольшое тестирование путем создания фиктивного файла PHP в корневом веб-каталоге, который вызывает функцию phpinfo ()
ция:
sudo vi /var/www/testing.php
Примечания: vi
больше касается мышечной памяти, чем неявной поддержки редактора. / var / www
на фактическое корневое расположение документа для http: // localhost
Php phpinfo (); ?>
http: //localhost/testing.php
.Это должно дать вам информационную страницу PHP, которая выглядит примерно так:
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 до боли просты, так как многие люди сделали инструменты намного проще в использовании за последнее десятилетие или около того.
Надеюсь, что-то здесь поможет вам решить проблему.