【问题标题】:cPanel with PHP selector shows WordPress Error "PHP installation appears to be missing the MySQL extension which is required by WordPress"带有 PHP 选择器的 cPanel 显示 WordPress 错误“PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展”
【发布时间】:2015-10-12 02:00:11
【问题描述】:

升级 MySQL 以使用 MariaDB 10 后,我的 CloudLinux cPanel 服务器上的多个站点只是带有Error: Your PHP installation appears to be missing the MySQL extension which is required by WordPress 的白屏

我可以为每个帐户选择 PHP 版本,但从 5.3 到 5.6 中选择任何一个都不起作用。

没有任何效果,使用 /scripts/easyapache/ 重建 Apache 和 PHP 无效,在失败的站点上运行 <?php echo phpinfo(); ?> 显示没有 mysqlmysqli 扩展。

如何解决这个问题?

【问题讨论】:

  • 你有root权限吗?如果是这样,请尝试使用sudo service apache restart 开始(假设是 Ubuntu)。如果这没有帮助,您是否查看过您的 php.ini 文件?
  • 我确实先重新启动了 Apache,实际上后来甚至重新构建了它 - 无济于事。这个问题原来是 MySQL 升级的结果——mysql.so、mysqli.so 和 pso_mysql.so 的符号链接都被破坏了——我回答了下面的问题。
  • 哦,对了。您是否手动进行了 MySQL 升级?如果是这样,它是否是主要版本更改(例如,从 5.5 到 5.6)?值得让操作系统进行此更新以确保安全 - 如果您必须进行手动升级,请设置一个新的/单独的 MySQL 数据库服务器,将数据库复制到那里,并将应用程序重新指向新服务器。这样,如果升级没有按计划进行,您就不会感到恐慌。
  • 我没有手动升级。要么是我的托管人员做到了(我有一个专用的盒子),要么是自动升级。因此完全震惊,不知道是什么原因造成的。不过对于任何未来的升级都是很好的建议 - 干杯。

标签: php mysql wordpress cpanel mariadb


【解决方案1】:

cpanel 论坛的讨论帮助我解决了这个问题。就我而言,我们最近从 easyapache3 转移到了 easyapache4,并且发现 ea3 的自定义“suPHP_config”指令导致了这个问题。一旦它被禁用,它就会再次运行良好。

https://forums.cpanel.net/threads/mysql-extension-missing.554251/

【讨论】:

    【解决方案2】:

    您可能想检查网站的第一个条目。大多数时候,如果是 Wordpress 网站,我会先在应用级别调试网站。

    所以我首先查看 .htaccess 并重置那里的所有内容。所以我只留下了 wordpress 的一段代码块:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    .. 如果它解决了问题,那么应该存在插件粘贴不应该存在的指令的问题。

    在 cPanel 升级后 Wordfence WAF 与较新的 php 版本不兼容时,有时我会收到相同的错误消息。

    【讨论】:

    • 不要回答问题。这是简单的复制和粘贴,对问题没有任何价值或在任何情况下误导用户
    【解决方案3】:

    同样的问题,我找到了这个解决方案:

    extension=mysql.so
    extension=mysqli.so
    extension=pdo_mysql.so
    

    这些行应该添加到所有 php.ini 文件中:

    /opt/alt/php44/etc/php.ini
    /opt/alt/php51/etc/php.ini
    /opt/alt/php52/etc/php.ini
    /opt/alt/php53/etc/php.ini
    /opt/alt/php54/etc/php.ini
    /opt/alt/php55/etc/php.ini
    /opt/alt/php55/etc/php.ini
    /opt/alt/php70/etc/php.ini
    

    【讨论】:

      【解决方案4】:

      我有同样的问题,但似乎 不是 与符号链接相关的问题:

      root@cpanel [/opt/alt/php55/usr/lib64/php/modules]# mysql -V
      mysql  Ver 15.1 Distrib 10.0.24-MariaDB, for Linux (x86_64) using readline 5.1
      
      root@cpanel [/opt/alt/php55/usr/lib64/php/modules]# pwd
      /opt/alt/php55/usr/lib64/php/modules`
      
      root@cpanel [/opt/alt/php55/usr/lib64/php/modules]# ls -la *mysql*
      lrwxrwxrwx 1 root root         38 Apr 12 10:02 mysqli.so -> /opt/alt/php55/etc/mariadb10/mysqli.so
      -rwxr-xr-x 1 root linksafe 264176 Mar  3 10:09 mysqlnd.so*
      lrwxrwxrwx 1 root root         37 Apr 12 10:02 mysql.so -> /opt/alt/php55/etc/mariadb10/mysql.so
      -rwxr-xr-x 1 root linksafe 132512 Mar  3 10:09 nd_mysqli.so*
      -rwxr-xr-x 1 root linksafe  49448 Mar  3 10:09 nd_mysql.so*
      -rwxr-xr-x 1 root linksafe  28704 Mar  3 10:09 nd_pdo_mysql.so*
      lrwxrwxrwx 1 root root         41 Apr 12 10:02 pdo_mysql.so -> /opt/alt/php55/etc/mariadb10/pdo_mysql.so`
      

      是否有任何其他阻碍因素会导致此问题?

      【讨论】:

        【解决方案5】:

        如果您在 cPanel 服务器上运行 MySQL/MariaDB,这可能不需要大量重建或重新安装 PHP/MySQL - 如果您运行 64 位 CloudLinux,这很有可能。

        可能只是模块的符号链接损坏。

        如果您登录 WHM 并搜索“MariaDB”,您可能会找到“MySQL/MariaDB 升级”选项 - 这意味着您正在使用它。或者,您可以询问您的主机是否 MySQL/MariaDB 是数据库管理系统。

        如果您正在使用 MariaDB,升级可能会破坏指向 mysql.somysqli.sopdo_mysql.so 的符号链接。

        仅当您通过命令行具有 root 访问权限并且知道自己在做什么时才尝试以下操作 - 否则请让您的主机执行此操作。

        在您损坏的网站的 Web 根目录中创建一个名为 info.php 的文件,代码如下:

        <?php 
            $inipath = php_ini_loaded_file();
        
            if ($inipath)
            {
                echo 'Loaded php.ini: ' . $inipath;
            } else 
            {
                echo "No php.ini - MariaDB symlinks are NOT the problem";
            }
        ?>
        

        当您导航到http://www.yoursite.com/info.php 时,这将为您提供您正在使用的 PHP 构建的 php.ini 文件的路径。

        就我而言,它显示/opt/alt/php55/etc/php.ini

        这是通过 cPanel 中的 PHP 选择器选择的 PHP 5.5。第一部分:/opt/alt/php55/ 显示了我们需要在下一步中查看的位置。

        现在,通过命令行登录并运行:

        cd /opt/alt/php55/usr/lib64/php/modules 
        ls -la
        

        查看列表,看看是否可以找到类似的内容:

        mysql.so -> /opt/alt/php55/etc/mysql10/mysql.so
        

        如果出现在/etc/****/mysql.so 之间的不是mariadb10(或您正在运行的任何版本的MariaDB),那么您需要重建符号链接。

        unlink mysql.so
        unlink mysqli.so
        unlink pdo_mysql.so
        
        ln -s /opt/alt/php55/etc/mariadb10/mysql.so /opt/alt/php55/usr/lib64/php/modules/mysql.so
        ln -s /opt/alt/php53/etc/mariadb10/mysqli.so /opt/alt/php55/usr/lib64/php/modules/mysqli.so
        ln -s /opt/alt/php53/etc/mariadb10/pdo_mysql.so /opt/alt/php55/usr/lib64/php/modules/pdo_mysql.so
        

        然后您可能需要对通过 PHP 选择器提供的其他 PHP 版本执行相同操作。就我而言,这还涉及修复:

        /opt/alt/php53/usr/lib64/php/modules 
        /opt/alt/php54/usr/lib64/php/modules 
        /opt/alt/php56/usr/lib64/php/modules
        

        这是一个完整的恐怖故事,但最终很容易修复(在重建和其他死胡同之后)。

        【讨论】:

        • 我只是一个 cPanel 经销商,所以我没有访问/opt/.... 的权限。请问我该如何解决这个问题?
        猜你喜欢
        • 2019-02-04
        • 2021-03-17
        • 2014-01-04
        • 2015-08-13
        • 2016-04-19
        • 2013-07-15
        相关资源
        最近更新 更多