php - name - mysql_connect() headers and client library minor version mismatch centos 7
Los encabezados y la versiĆ³n secundaria de la biblioteca cliente no coinciden (13)
En PHP recibo la siguiente advertencia cada vez que trato de conectarme a una base de datos (a través de mysql_connect
)
Advertencia: mysql_connect (): los encabezados y la versión secundaria de la biblioteca cliente no coinciden. Encabezados: 50162 Biblioteca: 50524
En mi salida php -i
tengo los siguientes valores enumerados en mysqli
Versión de biblioteca de API de cliente => 5.5.24
Client header header version => 5.1.62
Intenté actualizar php5-mysql y php, pero ya estoy en la última versión de ambos. ¿Cómo hago para actualizar la versión del encabezado y dejo de ver esta advertencia?
EDITAR
Mis archivos MySQL deberían actualizarse para ser la última versión:
$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.
Eliminando versiones antiguas
$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 is not installed, so not removed
Package mysql-client-5.1 is not installed, so not removed
Package mysql-client-core-5.1 is not installed, so not removed
Package mysql-server-5.1 is not installed, so not removed
Package mysql-server-core-5.1 is not installed, so not removed
Package mysql-source-5.1 is not installed, so not removed
El motivo principal de este error es que PHP se separó de las bibliotecas de MySQL Client hace algún tiempo. Entonces, lo que está sucediendo (principalmente en compilaciones antiguas de Linux) es que la gente compilará PHP contra una compilación dada del Cliente MySQL (lo que significa que la versión de MySQL instalada es irrelevante) y no la actualización (en CentOS este paquete aparece como mysqlclientXX
, donde XX
representa el número de paquete). Esto también permite que el mantenedor de paquetes soporte versiones inferiores de MySQL. Es una manera desordenada de hacerlo, pero era la única forma en que PHP y MySQL usan diferentes licencias.
MySQLND resuelve el problema utilizando el controlador nativo de PHP (el ND), que ya no depende del cliente MySQL. También está compilado para la versión de PHP que estás usando. Esta es una mejor solución, si no fuera por otra razón, que MySQLND está hecho para hablar PHP con MySQL.
Si no puede instalar MySQLND, puede ignorar este error en la mayoría de los casos. Es solo más que un aviso de FYI. Simplemente suena aterrador.
Estoy usando MariaDB y tengo el problema similar.
Desde el sitio de MariaDB , se recomienda solucionarlo
- Cambie al uso del controlador mysqlnd en PHP (solución recomendada).
Ejecutar con un nivel inferior de informe de errores:
$err_level = error_reporting(0); $conn = mysql_connect(''params''); error_reporting($err_level);
- Recompile PHP con las bibliotecas del cliente MariaDB.
- Use su biblioteca de cliente MySQL original con MariaDB.
Mi problema se solucionó al usar el controlador mysqlnd en Ubuntu:
sudo apt-get install php5-mysqlnd
¡Aclamaciones!
[actualización: información adicional] La instalación de este controlador también resuelve el problema de PDO que devuelve el valor entero como una cadena. Para mantener el tipo como entero, después de instalar mysqlInd, haga esto
$db = new PDO(''mysql:host=''.$host.'';dbname=''.$db_name, $user, $pass,
array( PDO::ATTR_PERSISTENT => true));
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Lo mismo funciona para MySQL:
sudo apt-get install php5-mysqlnd
He leído este hilo tratando de encontrar la solución para MySQL, y también he visto la respuesta de Ken, pero ignoré la solución para MariaDB, desperdiciando unas horas de esa manera. No estaba claro para mí que lo mismo podría aplicarse a MySQL. Esta publicación es solo para ahorrarle las pocas horas que perdí.
Para WHM y cPanel, algunas versiones deben establecer explícitamente mysqli para compilar.
Usando WHM, bajo CENTOS 6.9 xen pv [dc] v68.0.27, se necesitaba reconstruir Apache / PHP mirando todas las opciones y seleccionando mysqli para compilar. El valor predeterminado era construir el mysql obsoleto. Ahora los mensajes de depreciación se han ido y uno está listo para futuras actualizaciones de MySQL.
Para compilar php desde la fuente con el controlador nativo de MySQL (mysqlnd) ,
cd /php/source/path
./configure <other-options> --with-mysql --with-mysqli --with-pdo-mysql
make clean # required if there was a previous make, which could cause various errors during make
make
make install
Desde /php/source/path/configure --help
.
--with-mysql=DIR Include MySQL support. DIR is the MySQL base
directory, if no DIR is passed or the value is
mysqlnd the MySQL native driver will be used
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
as FILE, the MySQL native driver will be used
--with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory
If no value or mysqlnd is passed as DIR, the
MySQL native driver will be used
Se pueden incluir una o más extensiones PHP MySQL utilizando estas opciones.
Si no se pasa un valor a estas opciones, o si el valor es mysqlnd
, se mysqlnd
controlador nativo de MySQL.
Para la nueva familia MySQL 5.6 necesita instalar php5-mysqlnd, no php5-mysql.
Eliminar esta versión del controlador mysql
sudo apt-get remove php5-mysql
E instala esto en cambio
sudo apt-get install php5-mysqlnd
Parece que tuve el mismo problema y parece ser un problema de servidor. Todo lo que hice fue ir a your-wordpress-folder/wp-includes/wp-db.php
buscar mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
línea. El mío estaba en la line 1489
, cámbialo a
@mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
es decir, solo agrega @
justo antes del mysqli
.
Recibí este mensaje después de actualizar a la última versión de WordPress. Simplemente llame a su empresa de alojamiento y actualizarán la versión de PHP. El problema se resolverá en minutos.
Si tuviera acceso a cpanel o whm para el alojamiento web de dominio ...
En cPanel, ve a la pestaña "Softwares and services", >> y luego haz clic en "Select PHP Version" >> configura tu versión deseada de php ...
P.ej. Versión actual de PHP:
Versión de PHP [5.2] (lista de 5.2, 5.3, 5.4, 5.5, 5.6 versiones de php disponibles)
Advertencia: Cambiar los módulos de php y las opciones de php a través de PHP Selector para la versión nativa de php es imposible
Seleccioné la versión de php 5.6, después de que se borrara ese error en mi sitio de blogs de WordPress ...
Su PHP fue compilado con MySQL 5.1 pero ahora está enlazando una biblioteca mysql de la familia 5.5.X. Debe actualizar PHP a una versión compilada con MySQL 5.5 o revertir las bibliotecas de cliente de mysql a 5.1.x.
Tengo el mismo php en conflicto en mi sitio de wordpress ...
Err: Advertencia: mysql_connect (): los encabezados y la versión secundaria de la biblioteca cliente no coinciden. Encabezados: 50547 Biblioteca: 50628 en /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php en la línea 1515
Causa: Actualicé la versión de wp 4.2 a 4.5 (no coincide con PHP y MySql)
Cambié wp-db.php en la línea 1515
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
a
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 );
}
Se consigue sin pelear err en mi sitio de wordpress
Tengo estos problemas cuando uso Percona / MySQL 5.6 y el controlador php fue compilado con 5.5 y php5-mysql es requerido para algunas aplicaciones, entonces escribo un script para reconstruir los controladores.
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026
Resolví el error anterior simplemente reconstruyendo mi Apache:
cPanel Version 56.0 (build 25)
Apache Version 2.4.18
PHP Version 5.5.30
MySQL Version 10.0.26-MariaDB