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
PHPはMySQL 5.1でコンパイルされましたが、現在は5.5.Xファミリのmysqlライブラリをリンクしています。 PHPをMySQL 5.5でコンパイルされたバージョンにアップグレードするか、mysqlクライアントライブラリを5.1.xに戻す必要があります。
MariaDBを使用していますが、同様の問題があります。
MariaDBサイト から、修正することをお勧めします
より低いエラーレポートレベルで実行します。
$err_level = error_reporting(0);
$conn = mysql_connect('params');
error_reporting($err_level);
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);
新しい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にも当てはまるかどうかは私には明らかではありませんでした。この投稿は、私が失った数時間を節約するためのものです。
このエラーの根本的な理由は、PHPがしばらく前にMySQLクライアントライブラリから分離されたためです。 (主にLinuxの古いコンパイルで)起こっていることは、MySQLクライアントの特定のビルドに対してPHPをコンパイルすることです(インストールされているMySQLのバージョンは無関係であり、アップグレードではないことを意味します(CentOSでは、このパッケージはmysqlclientXX
としてリストされます。XX
はパッケージ番号を表します)。これにより、パッケージメンテナはMySQLの下位バージョンをサポートすることもできます。これは面倒な方法ですが、PHPとMySQLが異なるライセンスを使用する方法を考えると、それが唯一の方法でした。
MySQLND は、MySQLクライアントに依存しなくなったPHPのネイティブドライバー(ND)を使用して問題を解決します。また、使用しているPHPのバージョン用にコンパイルされています。これは、MySQLNDがPHPをMySQLと通信させる他の理由がない限り、あらゆる点で優れたソリューションです。
MySQLNDをインストールできない場合、実際にはほとんどの場合、このエラーを安全に無視できます。それは何よりも単なるFYI通知です。怖いですね。
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ネイティブドライバーが使用されます。
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サイトでエラーなしでエラーが発生しました
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
Percona/MySQL 5.6を使用し、phpドライバーが5.5でコンパイルされ、一部のアプリにphp5-mysqlが必要な場合、この問題が発生するため、ドライバーを再構築するスクリプトを作成します。
WHMおよびcPanelの場合、一部のバージョンではmysqliをビルドするように明示的に設定する必要があります。
CENTOS 6.9 xen pv [dc] v68.0.27でWHMを使用すると、すべてのオプションを確認してビルドするmysqliを選択してApache/PHPを再構築する必要がありました。デフォルトでは、非推奨のmysqlがビルドされました。これで減価償却メッセージはなくなり、将来のMySQLアップグレードの準備が整いました。
PHPバージョンを5.6から5.5に変更して修正。
[コントロールパネル]> [CGIスクリプト]に移動し、PHPバージョンを変更する必要があります。