aws/aws-crt-php

AWS Common Runtime for PHP

v1.0.2 2021-09-03 22:57 UTC

README

Requirements

  • PHP 5.5+ on UNIX platforms, 7.2+ on Windows
  • CMake 3.x
  • GCC 4.4+, clang 3.8+ on UNIX, Visual Studio 2017 build tools on Windows
  • Tests require Composer

Building on UNIX

$ git clone --recursive https://github.com/awslabs/aws-crt-php.git
$ cd aws-crt-php
$ phpize
$ ./configure
$ make && make test

Building on Windows

""" From VS2017 Command Prompt
> C:\php-sdk\phpsdk-vc15-x64.bat

C:\php-sdk\
$ phpsdk_buildtree php-<version>

C:\php-sdk\php-<version>\vc15\x64\
$ git clone https://github.com/php/php-src.git && cd php-src

""" This only has to be done once, the first time you set this all up
C:\php-sdk\php-<version>\vc15\x64\php-src
$ phpsdk_deps --update --branch <php-major.minor-version>

C:\php-sdk\php-<version>\vc15\x64\php-src
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git ..\pecl\awscrt

C:\php-sdk\php-<version>\vc15\x64\php-src
$ buildconf

C:\php-sdk\php-<version>\vc15\x64\php-src
$ configure --enable-cli --with-openssl --enable-awscrt=shared

C:\php-sdk\php-<version>\vc15\x64\php-src
$ nmake

C:\php-sdk\php-<version>\vc15\x64\php-src
$ nmake test-awscrt

Note: for VS2017, Cmake will default to build for Win32, refer to here. If you are building for x64 php, you can set environment variable as follow to let cmake pick x64 compiler.

set CMAKE_GENERATOR=Visual Studio 15 2017
set CMAKE_GENERATOR_PLATFORM=x64

Debugging

Using PHPBrew to build/manage multiple versions of PHP is helpful.

Note: You must use a debug build of PHP to debug native extensions. See the PHP Internals Book for more info

# PHP 8 example
$ phpbrew install --stdout -j 8 8.0 +default -- CFLAGS=-Wno-error --disable-cgi --enable-debug
# PHP 5.5 example
$ phpbrew install --stdout -j 8 5.5 +default -openssl -mbstring -- CFLAGS="-w -Wno-error" --enable-debug --with-zlib=/usr/local/opt/zlib
$ phpbrew switch php-8.0.6 # or whatever version is current, it'll be at the end of the build output
$ phpize
$ ./configure
$ make CMAKE_BUILD_TYPE=Debug

Ensure that the php you launch from your debugger is the result of which php, not just the system default php.

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.