升级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(); ?>
表示没有mysql
或mysqli
扩展名。< / p>
如何解决这个问题?
答案 0 :(得分:2)
如果您在cPanel服务器上运行MySQL / MariaDB,这可能不需要重建或重新安装PHP / MySQL - 如果您运行的是64位CloudLinux,这很可能。
它可能只是破坏了模块的符号链接。
如果您登录WHM并搜索“MariaDB”,您可能会找到一个选项“MySQL / MariaDB Upgrade” - 这意味着您正在使用它。或者,您可以询问您的主机MySQL / MariaDB是否是数据库管理系统。
如果 使用MariaDB,则升级可能会使符号链接损坏为mysql.so
,mysqli.so
和pdo_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版本不兼容时,有时会收到相同的错误消息。