Web 服务器从 14.04 升级到 20.04(无法加载网页错误:无法加载数据库驱动程序:mysqli)

Web 服务器从 14.04 升级到 20.04(无法加载网页错误:无法加载数据库驱动程序:mysqli)

我非常需要帮助,我只想首先说我是 Web 服务器的新手。我的老板要求我将我们的 Web 服务器升级到最新版本的 Ubuntu 20.04 LTS,因为旧版本运行的是 14.04。我已经在桌面上安装了发行版和 LAMP Stack,因为我想在接触服务器之前先在自己的电脑上试用一下。我已经安装了 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

更新:数据库错误已通过以下 Matigo 提供的步骤解决。

这是我的新情况,我仍然无法以本地主机身份访问我的网站,因为它只显示“错误”字样

错误日志显示:

无法读取会话数据:用户(路径:/var/lib/php/sessions)在 /var/www/kssp/libraries/joomla/session/handler/native.php 第 194 行

我非常感谢大家的帮助!

顺便说一下,会话目录如下所示:不确定是否需要为此执行 chmod。

drwxr-xr-x 3 root root 4096 2 月 8 日 22:55 模块 drwx-wx-wt 2 root root 4096 2020 年 3 月 27 日 会话

问题解决了:

采取的步骤:

  • 卸载 - 重新安装 LAMP 服务器
  • 验证所有 php 模块是否已启用
  • 从旧服务器创建 mysql 数据库备份
  • 在新服务器中重新创建 mysql 数据库
  • 重新创建数据库用户并传递给新服务器,并确保其匹配 - 允许覆盖 Apache2.conf 上的所有内容
  • 启用重写模块

现在,网站上的所有内容看起来与我的本地主机/服务器完全相同。

接下来就是映射ip地址,并指向A记录。

我很高兴这个问题已经解决了,感谢 Matigo 向我介绍了具体步骤。

答案1

根据持续存在的错误,该问题(在我看来)可以归结为以下几种情况之一:

  1. php-mysql未安装,或者不是 PHP 7.4 的正确版本
  2. 未安装辅助php-mysqlnd包(这通常随附php-mysql,因此不需要注意)
  3. 自更新 PHP 以来,Apache 尚未重新启动
  4. 该扩展在其文件mysqli中被注释掉ini

因此,让我们通过在您的 Web 根目录中创建一个调用该phpinfo()函数的虚拟 PHP 文件来进行一些测试:

  1. 打开终端(如果尚未打开)
  2. 在 Web 根目录中创建一个虚拟 PHP 文件:
    sudo vi /var/www/testing.php
    
    笔记:
    您可以使用您喜欢的任何其他编辑器。 vi 更多的是关于肌肉记忆,而不是对编辑的默认认可。
    一定要改变 /var/www 到实际的文档根目录 http://localhost
  3. 将其粘贴到新文件中:
    <?php phpinfo(); ?>
    
  4. 保存文件
  5. 打开浏览器并访问http://localhost/testing.php。这将为您提供一个如下所示的 PHP 信息页面: PHP 信息
  6. 向下滚动(或使用“查找”功能)找到标题为 的部分mysqli。它看起来应该像这样: 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 安装的正确版本)

    如果一切安装正确,您将看到如下消息:

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    php7.4-mysql is already the newest version (7.4.3-4ubuntu2.4).
    0 to upgrade, 0 to newly install, 0 to remove and 2 not to upgrade.
    
  • mysqli.ini通过打开终端(或使用当前打开的终端)、导航到conf.dPHP 和 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文件并确保文件内容与以下内容相符:

    ; configuration for php mysql module
    ; priority=20
    extension=mysqli.so
    

    重新启动Apache:

    sudo service apache2 restart
    

    如果所有内容都匹配,则打开该mysqlnd.ini文件。此文件必须在 之前加载,因此目录中mysqli可能以 为前缀。确保此行前面没有。10-extension=mysqlnd.so;

如果到目前为止一切都符合您的配置...
⇢ 问题很可能出在应用程序代码本身,可能需要由熟悉系统的开发人员进行检查,以做出必要的更改,以适应新的技术堆栈。

我很少看到 Apache 安装需要这么多的努力,除非你正在迁移一些要求非常模糊的东西。大多数 LAMP 堆栈都非常简单,因为在过去十年左右的时间里,许多人已经使这些工具变得更容易使用。

希望这里的内容可以帮助您解决问题。

相关内容