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

时间:2015-07-22 09:20:45

标签: php mysql wordpress cpanel mariadb

升级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扩展名。< / p>

如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

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

它可能只是破坏了模块的符号链接。

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

如果 使用MariaDB,则升级可能会使符号链接损坏为mysql.somysqli.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构建的php.ini文件的路径。

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

这是PHP 5.5,它是通过cPanel中的PHP选择器选择的。第一部分:/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

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

答案 1 :(得分:1)

cpanel论坛讨论帮助我解决了这个案子。在我的情况下,我们最近从easyapache3迁移到easyapache4,并发现ea3的自定义“suPHP_config”指令导致问题。一旦它被禁用它再次运作良好。

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

我遇到了同样的问题,但似乎是与符号链接相关的问题:

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`

还有其他任何一个showstoppers会导致这个问题吗?

答案 4 :(得分:-1)

我经常看到这个问题。我在PHP / EA升级时注意到的一件事是suPHP_ConfigPath将不再在服务器上可用,因此如果在使用中,您将需要从.htaccess文件中删除它。由于一些奇怪的原因,它使用Wordpress创建此错误。尝试禁用.htaccess文件并再次尝试使用php 5.6。

答案 5 :(得分:-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版本不兼容时,有时会收到相同的错误消息。