web-dev-qa-db-ja.com

ヘッダーとクライアントライブラリのマイナーバージョンの不一致

PHPで、データベースに接続しようとすると(mysql_connect経由で)次の警告が表示されます

警告:mysql_connect():ヘッダーとクライアントライブラリのマイナーバージョンの不一致。ヘッダー:50162ライブラリ:50524

php -iの出力には、mysqliの下に次の値がリストされています。

クライアントAPIライブラリバージョン=> 5.5.24

クライアントAPIヘッダーバージョン=> 5.1.62

Php5-mysqlandphpを更新しようとしましたが、すでに両方の最新バージョンを使用しています。この警告が表示されないように、ヘッダーバージョンを更新するにはどうすればよいですか?

編集

MySQLファイルをすべて最新バージョンに更新する必要があります。

$ 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.

古いバージョンの削除

$ 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
79
Ian Hunter

PHPはMySQL 5.1でコンパイルされましたが、現在は5.5.Xファミリのmysqlライブラリをリンクしています。 PHPをMySQL 5.5でコンパイルされたバージョンにアップグレードするか、mysqlクライアントライブラリを5.1.xに戻す必要があります。

30
dAm2K

MariaDBを使用していますが、同様の問題があります。

MariaDBサイト から、修正することをお勧めします

  1. PHP(推奨ソリューション)でmysqlndドライバーの使用に切り替えます。
  2. より低いエラーレポートレベルで実行します。

    $err_level = error_reporting(0);  
    $conn = mysql_connect('params');  
    error_reporting($err_level); 
    
  3. MariaDBクライアントライブラリでPHPを再コンパイルします。
  4. MariaDBで元のMySQLクライアントライブラリを使用します。

Ubuntuでmysqlndドライバーを使用して修正した問題:

Sudo apt-get install php5-mysqlnd

乾杯!


[更新:追加情報]このドライバーをインストールすると、整数値を文字列として返すPDOの問題も解決します。タイプを整数として保持するには、mysqlIndをインストールした後、これを行います

$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);
122
ken

新しいMySQL 5.6ファミリの場合、php5-mysqlではなくphp5-mysqlndをインストールする必要があります。

このバージョンのmysqlドライバーを削除する

Sudo apt-get remove php5-mysql

代わりにこれをインストールします

Sudo apt-get install php5-mysqlnd

同じことがMySQLでも機能します。

Sudo apt-get install php5-mysqlnd

私はこのスレッドを読んでMySQLの解決策を見つけました。また、kenの答えも見ましたが、MariaDBの解決策を無視し、そのようにして数時間を無駄にしました。同じことがMySQLにも当てはまるかどうかは私には明らかではありませんでした。この投稿は、私が失った数時間を節約するためのものです。

23
marek

このエラーの根本的な理由は、PHPがしばらく前にMySQLクライアントライブラリから分離されたためです。 (主にLinuxの古いコンパイルで)起こっていることは、MySQLクライアントの特定のビルドに対してPHPをコンパイルすることです(インストールされているMySQLのバージョンは無関係であり、アップグレードではないことを意味します(CentOSでは、このパッケージはmysqlclientXXとしてリストされます。XXはパッケージ番号を表します)。これにより、パッケージメンテナはMySQLの下位バージョンをサポートすることもできます。これは面倒な方法ですが、PHPとMySQLが異なるライセンスを使用する方法を考えると、それが唯一の方法でした。

MySQLND は、MySQLクライアントに依存しなくなったPHPのネイティブドライバー(ND)を使用して問題を解決します。また、使用しているPHPのバージョン用にコンパイルされています。これは、MySQLNDがPHPをMySQLと通信させる他の理由がない限り、あらゆる点で優れたソリューションです。

MySQLNDをインストールできない場合、実際にはほとんどの場合、このエラーを安全に無視できます。それは何よりも単なるFYI通知です。怖いですね。

10
Machavity

MySQLネイティブドライバー(mysqlnd) でソースからphpをコンパイルするには、

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

/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

これらのオプションを使用して、1つ以上のPHP MySQL拡張を含めることができます。
これらのオプションに値が渡されない場合、または値がmysqlndの場合、MySQLネイティブドライバーが使用されます。

2
Sithsu

wordpressサイトで同じphp warringを取得しました...

エラー:警告:mysql_connect():ヘッダーとクライアントライブラリのマイナーバージョンの不一致。ヘッダー:50547ライブラリ:50628 /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php in 1515

原因:wp 4.2を4.5バージョンに更新しました(PHPとMySqlの不一致)

1515行でwp-db.phpを変更しました

$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

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 );
}

wordpressサイトでエラーなしでエラーが発生しました

1
OpenWebWar
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026

Apacheを再構築するだけで上記のエラーを解決しました。

cPanel Version  56.0 (build 25)
Apache Version  2.4.18
PHP Version 5.5.30
MySQL Version   10.0.26-MariaDB
1

ドメインWebホスティング用のcpanelまたはwhmにアクセスしていた場合...

CPanelで[ソフトウェアとサービス]タブに移動し、>>をクリックして[選択PHPバージョン] >>希望するバージョンのphpを設定します...

Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in chennaitechnologies.com

例えば。現在のPHPバージョン:

PHPバージョン[5.2](5.2、5.3、5.4、5.5、5.6の使用可能なPHPバージョンのリスト)

警告:ネイティブPHPバージョンのPHP Selectorを介したphpモジュールとphpオプションの変更は不可能です

wordpressブログサイトでエラーが解消された後、5.6 PHPバージョンを選択しました...

1
OpenWebWar

Percona/MySQL 5.6を使用し、phpドライバーが5.5でコンパイルされ、一部のアプリにphp5-mysqlが必要な場合、この問題が発生するため、ドライバーを再構築するスクリプトを作成します。

https://github.com/falcacibar/php5-mysql-rebuild

0
Felipe Buccioni

WHMおよびcPanelの場合、一部のバージョンではmysqliをビルドするように明示的に設定する必要があります。

CENTOS 6.9 xen pv [dc] v68.0.27でWHMを使用すると、すべてのオプションを確認してビルドするmysqliを選択してApache/PHPを再構築する必要がありました。デフォルトでは、非推奨のmysqlがビルドされました。これで減価償却メッセージはなくなり、将来のMySQLアップグレードの準備が整いました。

0
Bob P

PHPバージョンを5.6から5.5に変更して修正

[コントロールパネル]> [CGIスクリプト]に移動し、PHPバージョンを変更する必要があります。

0
Hammad Khan