To build extensions for PHP 8.2 or above, install Visual Studio 2019 or Visual Studio 2022, including Visual C++ toolset and the Windows SDK components.
To use the sample build scripts builddrivers.py and buildtools.py, install Python 3.x and Git for Windows. If git is unrecognized in a regular command prompt, make sure the environment path is set up correctly.
You must first be able to build PHP source without including our PHP extensions. Visit PHP SDK page for instructions on building PHP in Windows.
The Microsoft Drivers for PHP for SQL Server have been compiled and tested with PHP 8.2+ using Visual Studio 2019 or Visual Studio 2022. The drivers for Windows that are published for each release (including previews) are digitally signed. You are recommended to sign the binaries you have compiled locally for your own development or testing purposes, using tools like Authenticode. It verifies the publisher's identity and prevents malicious actors from posing as legitimate developers.
-
Download the source directory from this repository
-
Make a copy of the shared folder as a subfolder in sqlsrv and/or pdo_sqlsrv folder
-
Copy the sqlsrv and/or pdo_sqlsrv folder(s) into the PHP source ext subdirectory
-
Run
buildconf --forceto rebuild the configure.js script to include the sqlsrv and/or pdo_sqlsrv driver(s). -
Run
configure.batwith the desired driver options (as shown below) to generate the makefile. You can runconfigure.bat --helpto see what other options are available. For example, for non-thread safe build, add this option--disable-zts.- For SQLSRV add:
--enable-sqlsrv=shared - For PDO_SQLSRV add:
--enable-pdo --with-pdo-sqlsrv=shared
- For SQLSRV add:
-
Run
nmake. Optionally, you can runnmake cleanfirst. -
To install the drivers, there are two ways:
- Run
nmake install, or - Copy the drivers:
- Find the directory where the newly compiled php.exe is
- Locate the compiled php_sqlsrv.dll and/or php_pdo_sqlsrv.dll
- Copy the dll(s) to the ext subfolder
- Run
The sample build scripts, builddrivers.py and buildtools.py, can be used to build our extensions for PHP in Windows.
When asked to provide the PHP version, you should enter values like 7.4.27. If it's alpha, beta, or RC version, make sure the name you provide matches the PHP tag name without the prefix php-. For example, for PHP 8.0.0 beta 3, the tag name is php-8.0.0beta3, so you will enter 8.0.0beta3. Visit PHP SRC to find the appropriate tag names.
PHP recommends to unzip the PHP SDK into the shortest possible path, preferrably somewhere near the root drive. Therefore, this script will, by default, create a php-sdk folder in the C:\ drive, and this php-sdk directory tree will remain unless you remove it yourself. For ongoing development, we suggest you keep it around. The build scripts will handle updating the PHP SDK if a new version is available.
-
Launch a regular
cmdprompt -
Change to the directory where the Python scripts
builddrivers.pyandbuildtools.pyare -
Interactive mode:
- Type
py builddrivers.pyto start the interactive mode. Use lower cases to answer the following questions:- PHP Version
- 64-bit?
- Thread safe?
- Driver?
- Debug enabled?
- Download source from GitHub?
- For
yes/noquestions, you can simply hitENTERkey foryes. Other questions are self-explanatory.
- Type
-
Use Command-line arguments
- Type
py builddrivers.py -hto get a list of options and their descriptions - For example,
py builddrivers.py --PHPVER=8.4.0 --ARCH=x64 --THREAD=nts --DRIVER=sqlsrv --SOURCE=C:\local\sourcepy builddrivers.py --PHPVER=8.3.0 --ARCH=x86 --THREAD=ts --DEBUG
- Type
-
Based on the given configuration, if the script detects the presence of the PHP source directory, you can choose whether to rebuild, clean or superclean:
rebuildto build again using the same configuration (32 bit, thread safe, etc.)cleanto remove previous builds (binaries)supercleanto remove the entirephp-<version>-srcdirectory, which is often unnecessary
-
If you choose not to download from a GitHub repository, you will be asked to provide the full path to your local Source folder.
-
If the compilation is successful, you will be given the option to rebuild or quit.
If something went wrong or the build failed, the log file will be launched (you can find the log files in C:\php-sdk). Otherwise, the log file will not be shown, and they remain in C:\php-sdk until you remove them manually.
In addition to the log files in C:\php-sdk, you can examine the contents of C:\php-sdk\phpsdk-build-task.bat, which is overwritten every time you run the build scripts.
If your main goal is to build the drivers for testing, and/or there is no need to keep the php-sdk directory around, you can invoke py builddrivers.py with the necessary command-line arguments plus --TESTING, which turns on the testing mode (it is False by default).
Setting the testing mode automatically turns off the looping mechanism. When the build is finished, you will find a copy of the drivers (unless the build failed) and the php-sdk folder in the same directory of these Python scripts.
In addition, you can set an alternative destination using --DESTPATH=<some valid path>, which is None by default. Note that these two options are not available in the interactive mode. However, they are particularly useful for testing purposes (such as testing in a virtual machine) in which these build scripts are copied to a temporary folder. After the drivers have been successfully compiled and copied to the designated location, the temporary folder can be safely removed.