web-dev-qa-db-fra.com

Compilé PHP 7 extension mysql manquante dans WordPress

J'ai construit PHP 7 avec une configuration qui fonctionnait pour une version précédente de PHP. Maintenant, mes sites Web WordPress reçoivent le message:

Votre installation PHP semble ne pas avoir l'extension MySQL requise par WordPress.

D'autres sites Web utilisant mysqli fonctionnent. Qu'est-ce que je rate?

J'ai également inclus tous les fichiers .so avec mysql dans le nom:

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
21
user5174817

Comme cela a été mentionné ailleurs, le ext/mysql les fonctions ont été supprimées. Nous avons été en parler depuis un certain temps .

ext/mysql a été construit pour MySQL 3.23 et n'a reçu que très peu d'ajouts depuis lors tout en conservant la compatibilité avec cette ancienne version, ce qui rend le code un peu plus difficile à maintenir.

Si vous êtes déterminé à les remettre, vous pouvez les ajouter à PHP 7 en utilisant ext/mysql PECL Library

Il est important de noter que Wordpress 3.9 ou version ultérieure prend en charge mysqli

Dans WordPress 3.9, nous avons ajouté une couche supplémentaire à WPDB, le faisant basculer vers l'utilisation de la bibliothèque mysqli PHP, lors de l'utilisation de PHP 5,5 ou supérieur.

7
Machavity

PHP 7 a complètement supprimé mysql_ *.

Vous devez utiliser PDO ou mysqli. Wordpress ne semble pas supporter cela.

17
KiwiJuicer

mysql_* les fonctions ont été supprimées dans PHP 7.0 mettez à jour votre code en mysqli ou PDO

Jetez également un œil aux instructions préparées si vous gérez les entrées utilisateur. Pour réduire le risque de injections SQL

Un exemple de chaîne de connexion 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;
}
?>

Un exemple de chaîne de connexion pdo:

<?php
    $dbh = new PDO('mysql:Host=localhost;dbname=test', $user, $pass);
?> 

Remarque:

Cet exemple mysqli gère une erreur de connexion

8
BRoebie

Vérifiez si le Wordpress utilise toujours l'extension Mysql qui a été supprimée en PHP7.

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

Les extensions Mysqli et PDO ont été conservées. C'est la raison pour laquelle vos autres sites Web fonctionnent.

3
Bruno Leite

Ce problème est dû à php 7.1.0-dev.

J'en ai construit un autre avec la même version de configuration 7.0.0 et le problème a été résolu.

Cela n'a rien à voir avec WordPress car il essaiera automatiquement d'utiliser MySQLi lorsque MySQL n'est pas trouvé. Au moins dans WP 4.4.

3
user5174817