cPanel with PHP selector显示WordPress Error "PHP安装似乎缺少Wor


cPanel with PHP selector shows WordPress Error "PHP installation appears to be missing the MySQL extension which is required by WordPress"

在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扩展。

如何解决这个问题?

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

它可能只是到模块的断开的符号链接。

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

如果使用的是MariaDB,升级可能会破坏到mysql.so, mysqli.sopdo_mysql.so的符号链接。

只有当你通过命令行拥有root访问权限并且知道你在做什么时才尝试下面的操作——否则让你的主机来做。

在网站的根目录下创建一个名为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 .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论坛的讨论帮助我解决了这个问题。在我的例子中,我们最近从easyapache3迁移到easyapache4,发现ea3的自定义"suPHP_config"指令导致了这个问题。一旦它被禁用,它又工作得很好。

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

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

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

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

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`

还有什么其他的干扰因素会导致这个问题吗?

您可能想要检查站点的第一个条目。大多数时候,如果它是一个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

. .如果它解决了这个问题,那么应该有一个问题,即插件粘贴不应该在那里的指令。

有时我得到相同的错误信息时,Wordfence WAF不兼容较新的php版本后,cPanel升级。