PHPのmysqlndとmysqliの違い
開発環境を構築するときにphp-mysqlndではなくphp-mysqliをインストールするようになって、「php-mysqlndをインストールしなくていいんだっけ?」と思って調査したときの覚書。
環境: FreeBSD 14.1-RELEASE-p6, PHP 8.3.6
mysqlndとは?
PHPとMySQL(MariaDB)サーバーとの通信するためのライブラリ。
MySQL Native Driverが正式名称。
PHP5.3以前はMySQL Client Library(libmysql)が使われていたが、これはMySQL側が開発したものでありライセンスの問題があった。
そのためPHPプロジェクトで書き直されたものがMySQL Native Driver。
PHP5.4からデフォルトで有効。
参考: PHP: Mysqlndの概要 - Manual
参考: MySQL :: MySQL native driver for PHP - mysqlnd
参考: MySQL Native Driver for PHP, mysqlnd
mysqlndとphp-mysqliとの違い。
mysqlndはPHPのソースコードに組み込まれたライブラリ。
php-mysqliはPHP拡張モジュール。
MySQLサーバーに接続するプログラムはphp-mysqliが提供しているAPIで記述する。
php-mysqliは
MySQL Native Driver(mysqlnd)と
MySQL Client Library(libmysql)の
どちらのライブラリを使うか選択できる。
MySQL Native Driver(mysqlnd)を使っているか確認。
どのライブラリを使うかはコンパイル時に決める。
参考: PHP: どのライブラリを選ぶか - Manual
PHPのビルドオプションを表示する。
見やすいように改行する。
# php-config --configure-options | sed -e 's/ --/\n--/g'
...--enable-mysqlnd...
mysqliが読み込まれているか確認。
# php --ini
....Loaded Configuration File: /usr/local/etc/php.ini.../usr/local/etc/php/ext-20-mysqli.ini,...
mysqliとmysqlndの設定はphp.iniを参照する。
# less /usr/local/etc/php.ini
基本的に設定を変更する必要はない。