在WordPress中编译的PHP 7缺少mysql扩展

时间:2015-12-15 13:00:09

标签: php mysql wordpress

我已经使用适用于以前版本的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

6 个答案:

答案 0 :(得分:18)

PHP 7完全删除了mysql_ *。

您需要使用PDO或mysqli。 Wordpress似乎不支持这一点。

答案 1 :(得分:9)

在PHP 7.0中删除了

mysql_*个函数,将代码更新为mysqliPDO

如果您正在处理用户输入,请查看准备好的语句。减少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示例处理连接错误

答案 2 :(得分:8)

正如其他地方所提到的,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库。

答案 3 :(得分:4)

检查Wordpress是否仍然使用在PHP7中删除的Mysql扩展名。

http://php.net/manual/en/migration70.removed-exts-sapis.php

保留了Mysqli和PDO扩展。这就是您的其他网站正在运作的原因。

答案 4 :(得分:3)

此问题是由php 7.1.0-dev引起的。

我使用相同的配置版本7.0.0构建了另一个,问题已解决。

这与WordPress无关,因为当找不到MySQL时它会自动尝试使用MySQLi。至少在WP 4.4中。

答案 5 :(得分:-2)

在Ubuntu上,我通过运行

修复了这个错误
sudo apt-get install php-mysql

然后重新启动我的服务器(caddy,但你可能正在使用apache或nginx)。

source