带有PHP选择器的cPanel显示WordPress错误;PHP安装似乎缺少WordPress所需的MySQL扩展;

带有PHP选择器的cPanel显示WordPress错误;PHP安装似乎缺少WordPress所需的MySQL扩展;,php,mysql,wordpress,cpanel,mariadb,Php,Mysql,Wordpress,Cpanel,Mariadb,将MySQL升级为使用MariaDB 10后,我的CloudLinux cPanel服务器上的多个站点只是白屏,出现错误:您的PHP安装似乎缺少WordPress所需的MySQL扩展 我可以为每个帐户选择PHP版本,但是从5.3到5.6中选择任何一个都不起作用 什么都不起作用,使用/scripts/easyapache/重建Apache和PHP不起作用,在失败的站点上运行表明没有mysql或mysqli扩展 如何解决这一问题?如果您在cPanel服务器上运行MySQL/MariaDB,则可能不需

将MySQL升级为使用MariaDB 10后,我的CloudLinux cPanel服务器上的多个站点只是白屏,出现
错误:您的PHP安装似乎缺少WordPress所需的MySQL扩展

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

什么都不起作用,使用
/scripts/easyapache/
重建Apache和PHP不起作用,在失败的站点上运行
表明没有
mysql
mysqli
扩展


如何解决这一问题?

如果您在cPanel服务器上运行MySQL/MariaDB,则可能不需要对PHP/MySQL进行大型重建或重新安装,如果您运行的是64位CloudLinux,则很可能不需要进行大型重建或重新安装

它可能只是断开了与模块的符号链接

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

如果您正在使用MariaDB,升级可能会破坏指向
mysql.so
mysqli.so
pdo_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";
    }
?>
查看列表,看看是否可以找到以下内容:

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

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

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

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`

是否有其他ShowStopper会导致此问题?

这里也有相同的问题,我找到了此解决方案:

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

您可能需要检查站点的第一个条目。大多数时候,如果是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
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
。。如果它解决了这个问题,那么就应该有一个问题,插件粘贴不应该存在的指令


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

cPanel论坛的讨论帮助我解决了这个问题。在我的例子中,我们最近从EasyAppache3迁移到EasyAppache4,发现ea3的自定义“suPHP_config”指令导致了问题。一旦它被禁用,它又能正常工作了


您有root访问权限吗?如果是这样,请尝试使用
sudo服务apache restart
开始(假设Ubuntu)。如果这没有帮助,你看过你的php.ini文件了吗?我确实先重新启动了Apache,事实上,后来甚至重建了它——但都没有用。这个问题原来是MySQL升级的结果-到MySQL.so、mysqli.so和pso_MySQL.so的符号链接都断了-我回答了下面的问题。哦,对了。您是否手动升级了MySQL?如果是的话,这是一个主要的版本更改(例如5.5到5.6)?让这个操作系统的更新变得安全是值得的——如果你必须进行手动升级,请设置一个新的/单独的MySQL数据库服务器,将数据库复制到那里,然后将应用程序重新指向新的服务器。这样,如果升级不符合计划,您就不会惊慌失措。我没有手动进行升级。要么是我的托管人员做的(我有一个专用的盒子),要么是自动升级。因此完全震惊了,不知道是什么引起的。不过,对于未来的任何升级,都有很好的建议——干杯。不要回答问题。它只是简单的复制和粘贴,对问题没有任何价值,或者在任何情况下误导用户。我只是一个cPanel转售商,所以我没有访问
/opt/…
的特权。我怎样才能解决这个问题呢?
# 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