Building from source¶
Before attempting to build the extension, make sure the SAP NW RFC library is installed. See Installing the SAP NW RFC library for instructions.
Building on Linux¶
$ git clone https://github.com/gkralik/php7-sapnwrfc.git
$ cd php7-sapnwrfc
$ phpize
$ ./configure
$ make
$ sudo make install
The build script looks for the SAP NW RFC library in the following locations by default:
/usr/sap/nwrfcsdk
/usr/local/sap/nwrfcsdk
/usr/local/nwrfcsdk
/opt/nwrfcsdk
If you installed the library in another location, replace the ./configure
step
above with ./configure --with-sapnwrfc=/path/to/rfc-library
.
Building on Windows¶
We try to provide pre-built extensions for Windows users (see the release page). If you don’t find your desired version there or still want to build yourself, follow the instructions below.
To build PHP 8+ for Windows, you need Visual Studio 2019. To build PHP 7.4, Visual Studio 2017 is required. The workload Desktop development with C++ must be installed.
For this guide, we assume the base directory for the build to be C:\Workspace\php
and we want to build the extension for PHP 8.0.
Set up a build environment¶
Make sure you have a valid build enviroment as described here.
First, open a command line (cmd.exe
).
Change to C:\Workspace\php
and fetch the latest stable PHP SDK tag:
$ git clone https://github.com/Microsoft/php-sdk-binary-tools.git php-sdk
$ cd php-sdk
$ git checkout php-sdk-2.2.0
Now execute the starter script for the build environment and create the buildtree:
$ phpsdk-vs16-x64.bat
$ phpsdk_buildtree phpdev
Clone the php7-sapnwrfc repository
(or download and extract a release ZIP) into the
php-sdk\phpdev\vs16\x64\modules\sapnwrfc
folder and check out the tag you want to build:
$ cd php-sdk\phpdev\vs16\x64
$ mkdir modules
$ git clone https://github.com/gkralik/php7-sapnwrfc.git modules\sapnwrfc
$ cd modules\sapnwrfc
$ git checkout 2.0.0-beta3
Download the PHP 8 source code from the PHP for Windows download page
and extract it into php-sdk\phpdev\vs16\x64
.
The source code should be in the php-8.0.13-src
or similar folder.
Alternatively, you can clone the php-src repository and check out the desired tag.
Now change to the PHP sources folder, install the PHP build dependencies:
$ cd php-sdk\phpdev\vs16\x64\php-8.0.13-src
$ phpsdk_deps -u
Create the configure script and add the modules
directory to the module search path:
$ buildconf --add-modules-dir=..\modules
$ configure --help
The output of the configure --help
command should now include a line –with-sapnwrfc.
Finally, extract the SAP NW RFC SDK to C:\nwrfcsdk_750
(or any other path)
and set the PATH for the current console session:
set PATH=%PATH%;C:\nwrfcsdk_750\lib
Build the extension¶
From the PHP source folder, execute configure
, then nmake
to build the extension:
$ configure --disable-all --enable-cli --enable-test-ini --with-sapnwrfc=shared,C:\nwrfcsdk_750
$ nmake
To build a non-threadsafe version, add --disable-zts
to the configure
command.
The extension DLL can be found in the x64\Release_TS
(or x64\Release
for NTS builds)
folder and is named php_sapnwrfc.dll
.
To see if PHP can load the extension, execute the following command:
$ x64\Release_TS\php.exe -c x64\Release_TS\tmp-php.ini -m
To execute tests, execute nmake test
, passing in the tests folder of the extension.
Executing the tests requires access to a SAP system and a configuration file:
$ nmake test TESTS=..\modules\sapnwrfc\tests NO_INTERACTION=1 SAPNWRFC_ONLINE=1 SAPNWRFC_CUSTOM=1