编译的 PHP 7 在 WordPress 中缺少 mysql 扩展
Posted
技术标签:
【中文标题】编译的 PHP 7 在 WordPress 中缺少 mysql 扩展【英文标题】:Compiled PHP 7 missing mysql extension in WordPress 【发布时间】:2016-03-21 06:52:53 【问题描述】:我已经使用适用于以前版本的 php 的配置构建了 PHP 7。 现在我的 WordPress 网站收到消息:
您的 PHP 安装似乎缺少 WordPress 所需的 mysql 扩展。
使用 mysqli 的其他网站也可以。我错过了什么?
我还包含了所有名称中带有 mysql 的 .so 文件:
extension=dba.so
extension=mysql.so
extension=mysqli.so
extension=mysqlnd_mysql.so
extension=mysqlnd_mysqli.so
extension=mysqlnd.so
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_odbc.so
extension=odbc.so
【问题讨论】:
很可能会有大量的 Wordpress 用户面临类似的问题。这个问题和答案可以通用吗? 好问题顺便说一句,这可以帮助那些没有意识到 PHP 7.0 中删除了扩展的未来人 【参考方案1】:在 Ubuntu 上,我通过运行修复了这个错误
sudo apt-get install php-mysql
然后重新启动我的服务器(caddy,但您可能使用的是 apache 或 nginx)。
source
【讨论】:
【参考方案2】:这个问题是由 php 7.1.0-dev 引起的。
我用相同的配置版本 7.0.0 构建了另一个,问题已解决。
这与 WordPress 无关,因为它会在找不到 MySQL 时自动尝试使用 MySQLi。至少在 WP 4.4 中。
【讨论】:
... 如果您使用的不是最新版本的 WordPress,您应该使用 - 因为之前版本存在安全问题。 是 WordPress 不断升级的原因:-)【参考方案3】:mysql_*
函数在 PHP 7.0 中被删除,将您的代码更新为 mysqli 或 PDO
如果您正在处理用户输入,还请查看准备好的语句。减少SQL injections的机会
mysqli连接字符串示例:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno)
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
?>
pdo 连接字符串示例:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
注意:
那个 mysqli 示例处理连接错误
【讨论】:
我该怎么做?快速谷歌并没有透露某种设置来改变它。 不,mysqli就像mysql_*
函数只是代码我会添加一个例子
还阅读了手册,它解释了您需要了解的所有内容。
wp-db.php 有一些与 mysqli 相关的有趣变量。
为什么不赞成投票的人真的很想知道,所以我可以改进我将来给出的答案:)【参考方案4】:
PHP 7 已经完全删除了 mysql_*。
您需要使用 PDO 或 mysqli。 Wordpress 似乎不支持这一点。
【讨论】:
mysql_*
在 PHP 7 中已被完全删除,不仅是对它们的支持,如果我错了,请纠正我
我没有发现这个答案很有帮助。 PDO 或 mysqli 更适合 Wordpress 网站吗?升级需要做什么?
他们不这样做真是太疯狂了(在 18 年仍然没有)——这真的应该由他们来排序【参考方案5】:
正如在其他地方提到的,ext/mysql
函数已被删除。我们一直是talking about this for some time。
ext/mysql 是为 MySQL 3.23 构建的,从那时起只添加了很少的内容,同时主要保持与旧版本的兼容性,这使得代码更难维护。
如果您一心想将它们放回原处,可以使用 ext/mysql PECL Library 将它们重新添加到 PHP 7 中
需要注意的是Wordpress 3.9 or later supports mysqli
在 WordPress 3.9 中,我们为 WPDB 添加了一个额外的层,使其在使用 PHP 5.5 或更高版本时切换到使用 mysqli PHP 库。
【讨论】:
我发现这篇文章有助于将 mysql 扩展添加回 PHP 7:ckon.wordpress.com/2015/08/06/… @phansen 我只能说这是一个非常糟糕的主意。迁移到 PDO 或 mysqli。跳过障碍来恢复已弃用的功能并不是一个好主意。【参考方案6】:检查 Wordpress 是否仍在使用 PHP7 中删除的 Mysql 扩展。
http://php.net/manual/en/migration70.removed-exts-sapis.php
Mysqli 和 PDO 扩展被保留。这就是您的其他网站正常运行的原因。
【讨论】:
以上是关于编译的 PHP 7 在 WordPress 中缺少 mysql 扩展的主要内容,如果未能解决你的问题,请参考以下文章
您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展
Wordpress localhost 安装错误 - 您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展