Welcome to the Microsoft Drivers for PHP for Microsoft SQL Server
The Microsoft Drivers for PHP for Microsoft SQL Server are PHP extensions that allow for the reading and writing of SQL Server data from within PHP scripts. The SQLSRV extension provides a procedural interface while the PDO_SQLSRV extension implements PHP Data Objects (PDO) for accessing data in all editions of SQL Server 2008 R2 and later (including Azure SQL DB). These drivers rely on the Microsoft ODBC Driver for SQL Server to handle the low-level communication with SQL Server.
This release contains the SQLSRV and PDO_SQLSRV drivers for PHP 7.* with improvements on both drivers and some limitations (see Limitations below for details). Upcoming releases will contain additional functionality, bug fixes, and more (see Plans below for more details).
SQL Server Team
Thank you for taking the time to participate in our last survey. You can continue to help us improve by letting us know how we are doing and how you use PHP by taking our December pulse survey:
AppVeyor (Windows) | Travis CI (Linux) | Coverage (Windows) | Coverage (Linux) |
---|---|---|---|
- Windows + SQL Server + PHP 7
- Ubuntu + SQL Server + PHP 7
- RedHat + SQL Server + PHP 7
- SUSE + SQL Server + PHP 7
- macOS + SQL Server + PHP 7
- Docker
Please visit the blog for more announcements.
For full details on the system requirements for the drivers, see the system requirements on MSDN.
On the client machine:
- PHP 7.0.x, 7.1.x, or 7.2.x (7.2.0 and up on Unix, 7.2.1 and up on Windows)
- A Web server such as Internet Information Services (IIS) is required. Your Web server must be configured to run PHP
- Microsoft ODBC Driver 11, Microsoft ODBC Driver 13, or Microsoft ODBC Driver 17
On the server side, Microsoft SQL Server 2008 R2 and above on Windows is supported, as is Microsoft SQL Server 2016 and above on Linux.
The drivers are distributed as pre-compiled extensions for PHP found on the releases page. They are available in thread-safe and non thread-safe versions, and in 32-bit and 64-bit versions. The source code for the drivers is also available, and you can compile them as thread safe or non-thread safe versions. The thread safety configuration of your web server will determine which version you need.
If you choose to build the drivers, you must be able to build PHP 7 without including these extensions. For help building PHP on Windows, see the official PHP website. For details on compiling the drivers, see the documentation -- an example buildscript is provided, but you can also compile the drivers manually.
To load the drivers, make sure that the driver is in your PHP extension directory and enable it in your PHP installation's php.ini file by adding extension=php_sqlsrv.dll
and/or extension=php_pdo_sqlsrv.dll
to it. If necessary, specify the extension directory using extension_dir
, for example: extension_dir = "C:\PHP\ext"
. Note that the precompiled binaries have different names -- substitute accordingly in php.ini. For more details on loading the drivers, see Loading the PHP SQL Driver on MSDN.
Finally, restart the Web server.
For full instructions on installing the drivers on all supported Unix platforms, see the installation instructions on MSDN.
For PHP code samples, please see the sample folder or the code samples on MSDN.
Please refer to Releases for the latest limitations and known issues.
The version numbers of the PHP drivers follow semantic versioning:
Given a version number MAJOR.MINOR.PATCH,
- MAJOR version is incremented when an incompatible API change is made,
- MINOR version is incremented when functionality is added in a backwards-compatible manner, and
- PATCH version is incremented when backwards-compatible bug fixes are made.
The version number may have trailing pre-release version identifiers to indicate the stability and/or build metadata.
- Pre-release version is denoted by a hyphen followed by
preview
orRC
and may be followed by a series of dot separated identifiers. Production quality releases do not contain the pre-release version.preview
has lower precedence thanRC
. Example of precedence: preview < preview.1 < RC < RC.1. Note that the PECL package version numbers do not have the hyphen before the pre-release version, owing to restrictions in PECL. Example of a PECL package version number: 1.2.3preview - Build metadata may be denoted by a plus sign followed by 4 or 5 digits, such as
1.2.3-preview+5678
or1.2.3+5678
. Build metadata does not figure into the precedence order.
- Expand SQL Server 2016 feature support (example: Always Encrypted)
- Add more verification/fundamental tests
- Bug fixes
We appreciate you taking the time to test the driver, provide feedback and report any issues. It would be extremely helpful if you:
- Report each issue as a new issue (but check first if it's already been reported)
- Try to be detailed in your report. Useful information for good bug reports includes:
- What you are seeing and what the expected behaviour is
- Can you connect to SQL Server via
sqlcmd
? - Which driver: SQLSRV or PDO_SQLSRV?
- Environment details: e.g. PHP version, thread safe (TS) or non-thread safe (NTS), 32-bit or 64-bit?
- Table schema (for some issues, the data types make a big difference!)
- Any other relevant information you want to share
- Try to include a PHP script demonstrating the isolated problem.
Thank you!
Q: Can we get dates for any of the Future Plans listed above?
A: At this time, Microsoft is not able to announce dates. We are working hard to release future versions of the driver and will share future plans as appropriate.
Q: What's next?
A: On March 23, 2018 we released the production release version 5.2.0 of our PHP Driver. We will continue working on our future plans and releasing previews of upcoming releases frequently.
Q: Is Microsoft taking pull requests for this project?
A: Yes. Please submit pull requests to the dev branch and not the master branch.
The Microsoft Drivers for PHP for SQL Server are licensed under the MIT license. See the LICENSE file for more details.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Documentation: MSDN Online Documentation.
Team Blog: Browse our blog for comments and announcements from the team in the team blog.
Known Issues: Please visit the project on Github to view outstanding issues and report new ones.