我已经使用适用于以前版本的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
答案 0 :(得分:18)
PHP 7完全删除了mysql_ *。
您需要使用PDO或mysqli。 Wordpress似乎不支持这一点。
答案 1 :(得分:9)
如果您正在处理用户输入,请查看准备好的语句。减少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)。