5.8.0 for PHP Driver for SQL Server
We are pleased to announce the next production release of the Microsoft Drivers for PHP for SQL Server. The SQLSRV and PDO_SQLSRV drivers have been built with PHP 7.2, 7.3, and 7.4 and tested on all supported platforms.
Notable items about this release (5.8.0) since the last production release (5.6.0) include the following:
Added
- Support for PHP 7.4
- Support for Microsoft ODBC Driver 17.5 on all platforms
- Support for Debian 10 and Red Hat 8 - require MS ODBC Driver 17.4+
- Support for macOS Catalina, Alpine Linux 3.11 (experimental), and Ubuntu 19.10 - require ODBC Driver 17.5+
- Feature Request #929 - new Language option - Pull Request #930
- Data Classification Sensitivity Metadata Retrieval - requires ODBC Driver 17.4.2+ and SQL Server 2019
- Feature Request #1018 - support for PHP extended string types - Pull Request #1043
- Always Encrypted with secure enclaves - requires ODBC Driver 17.4+ and SQL Server 2019
- Feature Request #1063 - add configurable options for locale settings in Linux and macOS - Pull Request #1069
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. More robust support will be added in future releases
Known Issues
- In 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
- To download Windows DLLs for PHP 7.2 or above from the PECL repository, please navigate to SQLSRV or PDO_SQLSRV.