Acabo de actualizar a PHP 7 solo para encontrar que WordPress 4.8.1 (última versión) todavía usa mysql_connect en el módulo wp-db.php, pero mysql_connect ha quedado en desuso.
El siguiente código está tomado de wp-db-php, líneas 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);
}
Aquí está el resultado cuando intento ejecutar mi programa:
Error fatal: Error no detectado: Llamada a la función indefinida mysql_connect () en D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db.php: 1570 Seguimiento de
pila:
# 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} incluido en D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db. php en línea 1570
No puedo creer que WordPress diga que recomienda PHP 7, pero no funciona con él. ¿Que me estoy perdiendo aqui?
mysql_connect
solo se usa como reserva cuandomysqli
no se detecta. Parecería que haya ningunomysqli
omysql
instalado (mysqli
se recomienda,mysql
es obsoleto)Respuestas:
Parece que no tiene mysqli instalado y / o habilitado en su servidor. IIRC
mysqli
se agregó a php en la versión 5.5, y lamysql
extensión anterior había quedado en desuso y se retiró por completo desde entonces. Si actualizó desde una versión PHP muy antigua, es posible que aún necesite el paso adicional de habilitarmysqli
.(WordPress comprueba la existencia de
mysqli
y solo si no existe prueba lasmysql
funciones más antiguas ).fuente
Además de la respuesta @MarkKaplun, publico un código de la clase wpdb:
Así es como
wpdb::use_mysqli
se determina:Está inicializado con:
y luego en el
wpdb
constructor tenemos:fuente
Lo que debe hacer para resolver este problema es editar su archivo php.ini.
corre donde se
php.ini
encuentra el mío en:/etc/php/php.ini
(aunque no sé qué sistema operativo está ejecutando, simplemente encuentre el suyo)Busque estos dos archivos:
y descomentarlos. Voila, eso haría el trabajo en cualquier momento.
Lectura adicional: https://wiki.archlinux.org/index.php/PHP
fuente
¿Estás usando Xamppp 7.x para Windows?
Me sucedió cuando actualicé mi Xampp 5.6 a Xampp 7.1. Al inspeccionar el archivo de configuración C: \ Xampp \ php \ php.ini , noté muchos errores relacionados con el nombre de las extensiones PHP (carecen del prefijo php_ y el sufijo .dll). Uno de ellos está relacionado con mysqli.
La configuración incorrecta que encontré allí:
La configuración correcta (después de editar esta línea):
Corregir eso resolvió mi problema.
Por cierto: no olvide corregir todas las demás configuraciones incorrectas (el nombre correcto de las extensiones se puede ver en C: \ xampp \ php \ ext).
fuente