Installation (original) (raw)
The mysqli
extension was introduced with PHP version 5.0.0. The MySQL Native Driver was included in PHP version 5.3.0.
Installation on Linux
The common Unix distributions include binary versions of PHP that can be installed. Although these binary versions are typically built with support for the MySQL extensions, the extension libraries themselves may need to be installed using an additional package. Check the package manager that comes with your chosen distribution for availability.
For example, on Ubuntu the php5-mysql
package installs the ext/mysql, ext/mysqli, and pdo_mysql PHP extensions. On CentOS, the php-mysql
package also installs these three PHP extensions.
Alternatively, you can compile this extension yourself. Building PHP from source allows you to specify the MySQL extensions you want to use, as well as your choice of client library for each extension.
The MySQL Native Driver is the recommended client library option, as it results in improved performance and gives access to features not available when using the MySQL Client Library. Refer toWhat is PHP's MySQL Native Driver? for a brief overview of the advantages of MySQL Native Driver.
The /path/to/mysql_config
represents the location of the mysql_config
program that comes with MySQL Server.
mysqli compile time support matrix
PHP Version | Default | Configure Options: mysqlnd | Configure Options: libmysqlclient | Changelog |
---|---|---|---|---|
5.4.x and above | mysqlnd | --with-mysqli | --with-mysqli=/path/to/mysql_config | mysqlnd is the default |
5.3.x | libmysqlclient | --with-mysqli=mysqlnd | --with-mysqli=/path/to/mysql_config | mysqlnd is supported |
5.0.x, 5.1.x, 5.2.x | libmysqlclient | Not Available | --with-mysqli=/path/to/mysql_config | mysqlnd is not supported |
Note that it is possible to freely mix MySQL extensions and client libraries. For example, it is possible to enable the MySQL extension to use the MySQL Client Library (libmysqlclient), while configuring themysqli
extension to use the MySQL Native Driver. However, all permutations of extension and client library are possible.
Installation on Windows Systems
On Windows, PHP is most commonly installed using the binary installer.
PHP 5.3.0 and newer
On Windows, for PHP versions 5.3 and newer, themysqli
extension is enabled and uses the MySQL Native Driver by default. This means you don't need to worry about configuring access to libmysql.dll.
PHP 5.0, 5.1, 5.2
On these old unsupported PHP versions (PHP 5.2 reached EOL on '6 Jan 2011'), additional configuration procedures are required to enable mysqli
and specify the client library you want it to use.
The mysqli
extension is not enabled by default, so the php_mysqli.dll DLL must be enabled inside of php.ini. In order to do this you need to find the php.ini file (typically located inc:\php), and make sure you remove the comment (semi-colon) from the start of the lineextension=php_mysqli.dll
, in the section marked[PHP_MYSQLI]
.
Also, if you want to use the MySQL Client Library withmysqli
, you need to make sure PHP can access the client library file. The MySQL Client Library is included as a file named libmysql.dll in the Windows PHP distribution. This file needs to be available in the Windows system'sPATH environment variable, so that it can be successfully loaded. See the FAQ titled "How do I add my PHP directory to the PATH on Windows" for information on how to do this. Copying libmysql.dll to the Windows system directory (typically c:\Windows\system) also works, as the system directory is by default in the system'sPATH. However, this practice is strongly discouraged.
As with enabling any PHP extension (such asphp_mysqli.dll), the PHP directiveextension_dir should be set to the directory where the PHP extensions are located. See also theManual Windows Installation Instructions. An example extension_dir
value for PHP 5 is c:\php\ext.
Note:
If when starting the web server an error similar to the following occurs:
"Unable to load dynamic library './php_mysqli.dll'"
, this is becausephp_mysqli.dll and/orlibmysql.dll cannot be found by the system.