We recently released Microsoft Drivers for PHP for SQL Server, version 5.8.0. This production release of the SQLSRV and PDO_SQLSRV drivers has been built with PHP 7.2, 7.3, and 7.4 and tested on all supported platforms.
Notable items about this release since the previous production release include:
Added
Removed
- Dropped support for PHP 7.1
- Dropped support for SQL Server 2008 R2, macOS Sierra, Ubuntu 18.10 and Ubuntu 19.04
Fixed
- Issue #570 - Fixed fetching varbinary data using client buffer with sqlsrv
- Pull Request #972 - Removed redundant calls to retrieve the number of columns or rows in the current query result set
- Pull Request #978 - PDO_SQLSRV implementation of PDO::getColumnMeta now references cached metadata rather than making an ODBC call every time
- Pull Request #979 - Added support for Data Classification Sensitivity metadata retrieval
- Pull Request #985 - Fixed memory issues with Data Classification data structures
- Issue #432 - Having any invalid UTF-8 name in the connection string will no longer invoke misleading error messages
- Issue #909 - Fixed potential exception with locale issues in macOS
- Pull Request #992 - Produced the correct error when requesting Data Classification metadata with ODBC drivers prior to 17
- Pull Request #1001 - Fixed compilation issue with PHP 7.4 alpha
- Pull Request #1004 - Fixed another compilation issue with PHP 7.4 alpha
- Pull Request #1008 - Improved data caching when fetching datetime objects
- Pull Request #1011 - Fixed a potential buffer overflow when parsing for escaped braces in the connection string
- Pull Request #1015 - Fixed compilation issues and addressed various memory leaks detected by PHP 7.4 beta 1
- Issue #1027 - Fixed how drivers handle query timeout settings
- Pull Request #1049 - Performance improvement for fetching from tables with many columns - cached the derived php types with column metadata to streamline data retrieval
- Pull Request #1068 - Some cosmetic changes to source code as per suggestions from a static analysis tool
- Issue #1079 - Support sql_variant types when using client buffers
Limitations
- No support for inout / output params when using sql_variant type
- No support for inout / output params when formatting decimal values
- In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connecting will not work
- Always Encrypted requires MS ODBC Driver 17+
- Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not yet supported
- Issue #716 - With Always Encrypted enabled, named parameters in subqueries are not supported
- Issue #1050 - With Always Encrypted enabled, insertion requires the column list for any tables with identity columns
- Always Encrypted limitations
- Alpine Linux support is currently experimental. Production support will be added in a future release.
Known Issues
- On Alpine Linux, the Client-Side Cursors feature may cause an access violation if both sqlsrv and pdo_sqlsrv are enabled. Either enable only sqlsrv or pdo_sqlsrv, or build PHP from source by compiling the drivers statically.
- Connection pooling on Linux or macOS is not recommended with unixODBC < 2.3.7
- When pooling is enabled in Linux or macOS
- unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostic information, such as error messages, warnings and informative messages
- due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples here
Survey
Let us know how we are doing and how you use our drivers by taking our pulse survey.
Install
- On Linux and macOS run the commands below:
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
- Windows DLLs for PHP 7.2 or above can be downloaded as a package from Microsoft, or from the PECL repository for SQLSRV or PDO_SQLSRV.
- Direct downloads for released binaries can also be found at the Github release tag.
David Engel