Je viens de passer à PHP 7 uniquement pour constater que WordPress 4.8.1 (dernière version) utilise toujours mysql_connect dans le module wp-db.php, mais mysql_connect a été déconseillé.
Le code suivant est tiré de wp-db-php, lignes 1567-1571:
if ( WP_DEBUG ) {
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
} else {
$this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this>dbpassword,
$new_link, $client_flags);
}
Voici la sortie lorsque j'essaie d'exécuter mon programme:
Erreur fatale: erreur non détectée: appel à la fonction non définie mysql_connect () dans D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db.php: 1570
Trace de pile:
# 0 D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp- db.php (658): wpdb-> db_connect ()
# 1 D: \ ApacheHtdocs \ ConneXions \ wp-includes \ load.php (404): wpdb -> __ construct ('root', '', 'connexions', ' localhost ')
# 2 D: \ ApacheHtdocs \ ConneXions \ wp-settings.php (106): require_wp_db ()
# 3 D: \ ApacheHtdocs \ ConneXions \ wp-config.php (104): require_once (' D: \ ApacheHtdocs. .. ')
# 4 D: \ ApacheHtdocs \ ConneXions \ wp-load.php (37): require_once (' D: \ ApacheHtdocs ... ')
# 5 D: \ ApacheHtdocs \ ConneXions \ wp-blog-header.php (13): require_once ('D: \ ApacheHtdocs ...')
# 6 D: \ ApacheHtdocs \ ConneXions \ index.php (17): require ('D: \ ApacheHtdocs ...')
# 7 {main} jeté dans D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db. php en ligne 1570
Je ne peux pas croire que WordPress dit qu'il recommande PHP 7, mais cela ne fonctionne pas avec lui. Qu'est-ce que j'oublie ici?
mysql_connect
est uniquement utilisé comme solution de secours lorsqu'ilmysqli
n'est pas détecté. Il semblerait que vous n'ayez ni installémysqli
nimysql
installé (mysqli
est recommandé,mysql
déconseillé)Réponses:
Cela semble que vous n'avez pas installé et / ou activé mysqli sur votre serveur. IIRC a
mysqli
été ajouté à php dans la version 5.5, et l'anciennemysql
extension a été déconseillée et entièrement retirée depuis lors. Si vous avez effectué une mise à niveau à partir d'une très ancienne version de PHP, il se peut que vous ayez encore besoin de l'étape supplémentaire d'activationmysqli
.(wordpress vérifie l'existence de
mysqli
et seulement s'il n'existe pas essaie les anciennesmysql
fonctions.)la source
En plus de la réponse @MarkKaplun, je poste du code de la classe wpdb:
Voici comment le
wpdb::use_mysqli
est déterminé:Il est initalisé avec:
puis dans le
wpdb
constructeur nous avons:la source
Ce que vous devez faire pour résoudre ce problème, c'est d'éditer votre fichier php.ini.
courir où est-ce que
php.ini
j'ai trouvé le mien à:/etc/php/php.ini
(même si je ne sais pas quel système d'exploitation vous utilisez, trouvez le vôtre)Recherchez ces deux fichiers:
et décommentez-les. Voila, cela ferait le travail à tout moment.
Pour en savoir plus: https://wiki.archlinux.org/index.php/PHP
la source
Utilisez-vous Xamppp 7.x pour Windows?
Cela m'est arrivé lorsque j'ai mis à niveau mon Xampp 5.6 vers Xampp 7.1. En inspectant le fichier de configuration C: \ Xampp \ php \ php.ini , j'ai remarqué beaucoup d'erreurs impliquant le nom des extensions PHP (il leur manque le préfixe php_ et le suffixe .dll). L'un d'eux est lié à mysqli.
Le mauvais réglage que j'ai trouvé là-bas:
Le bon réglage (après avoir édité cette ligne):
La correction a résolu mon problème.
Soit dit en passant: n'oubliez pas de corriger tous les autres paramètres incorrects (le nom correct des extensions peut être vu dans C: \ xampp \ php \ ext).
la source