.php-wasm-rc

The .php-wasm-rc file is a configuration file that allows you to specify custom build options for php-wasm. When placed in the same directory as your project, the php-wasm-builder tool will use it to customize the build process.

Example .php-wasm-rc file:

# Select a PHP version
PHP_VERSION=8.3

# Build the package to a directory other than the current one (RELATIVE path)
PHP_DIST_DIR=./public

# Build the extensions to a directory other than the current one (RELATIVE path)
PHP_ASSET_DIR=./public


# Build the cgi package to a directory other than the current one (RELATIVE path)
PHP_CGI_DIST_DIR=./public

# Build the cgi package's extensions to a directory other than the current one (RELATIVE path)
PHP_CGI_ASSET_DIR=./public

# Space separated list of files/directories (ABSOLUTE paths)
# to be included under the /preload directory in the final build.
PRELOAD_ASSETS=~/path/to/file/php-scripts ~/other-dir/example.php

# Memory to start the instance with, before growth
INITIAL_MEMORY=2048MB

# Build with assertions enabled
ASSERTIONS=0

# Select the optimization level
OPTIMIZATION=3

# Build with extensions
WITH_GD=1
WITH_LIBPNG=1
WITH_LIBJPEG=1
WITH_FREETYPE=1

Options

The following options may appear in .php-wasm-rc.

PRELOAD_ASSETS

Use the PRELOAD_ASSETS key in your .php-wasm-rc file to define a list of files and directories to include by default.

The files and directories will be collected into a single directory. Individual files & directories will appear in the top level, while directories will maintain their internal structure.

These files & directories will be available under /preload in the final package, packaged into the .data file that is built along with the .wasm file.

PRELOAD_ASSETS='/path/to/file.txt /some/directory /path/to/other_file.txt /some/other/directory'

PHP_VERSION

8.0|8.1|8.2|8.3


PHP_DIST_DIR

This is the directory where javascript & wasm files will be built to, relative to the current directory.


PHP_ASSET_DIR

This is the directory where shared libs, extension, .data files & other supporting files will be built to, relative to the current directory. Defaults to PHP_DIST_DIR.


OPTIMIZE

0|1|2|3

The optimization level to use while compiling.


SUBOPTIMIZE

The optimization level to use while compiling libraries. Defaults to OPTIMIZE.


ASSERTIONS

0|1

Build with/without assertions.


Extension Flags

Extensions may be compiled as dynamic, shared, or static.

  • dynamic - these extensions may be loaded selectively at runtime.
  • shared - these extensions will always be loaded at startup and can be cached and reused.
  • static - these extensions will be built directly into the main wasm binary (may cause a huge filesize).

(defaults provided below in bold)

The following options are available for building static PHP extensions:

WITH_BCMATH    # [0, 1] Enabled by default
WITH_CALENDAR  # [0, 1] Enabled by default
WITH_CTYPE     # [0, 1] Enabled by default
WITH_EXIF      # [0, 1] Enabled by default
WITH_FILTER    # [0, 1] Enabled by default
WITH_TOKENIZER # [0, 1] Enabled by default
WITH_VRZNO     # [0, 1] Enabled by default

The following extension may be compiled as static, shared or dynamic:

WITH_PHAR      # [0, 1, static, dynamic]
WITH_LIBXML    # [0, 1, static, shared]
WITH_ICONV     # [0, 1, static, shared, dynamic]
WITH_SQLITE    # [0, 1, static, shared, dynamic]

WITH_LIBZIP    # [0, 1, static, shared, dynamic]
WITH_ZLIB      # [0, 1, static, shared, dynamic]

WITH_GD        # [0, 1, static, shared, dynamic]
WITH_LIBPNG    # [0, 1, static, shared]
WITH_FREETYPE  # [0, 1, static, shared]
WITH_LIBJPEG   # [0, 1, static, shared]

WITH_YAML      # [0, 1, static, shared, dynamic]
WITH_TIDY      # [0, 1, static, shared, dynamic]
WITH_MBSTRING  # [0, 1, static, dynamic]
WITH_ONIGURUMA # [0, 1, static, shared]
WITH_OPENSSL   # [0, 1, shared, dynamic]
WITH_INTL      # [0, 1, static, shared, dynamic]

WITH_PHAR

static|dynamic

When compiled as a dynamic extension, this will produce the extension file php8.x-phar.so.


WITH_LIBXML

static|shared

This actual php-libxml extension must be statically compiled, but libxml itself may be loaded as a shared library.

When compiled as a shared library, it will produce the library libxml.so.


WITH_LIBZIP

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-zip.so.

When compiled as a dynamic or shared extension, it will produce the library libzip.so.

This extension depends on zlib.


WITH_ICONV

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-iconv.so.

When compiled as a dynamic or shared extension, it will produce the library libiconv.so.


WITH_SQLITE

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extensions php-8.x-sqlite.so, & php-8.x-pdo-sqlite.so.

When compiled as a dynamic or shared extension, it will produce the library libsqlite3.so.


WITH_GD

static|dynamic

If WITH_GD is set to dynamic, then libpng, libjpeg, and freetype will load after GD is loaded.

When compiled as a dynamic extension, this will produce the extension php-8.x-gd.so.


WITH_LIBPNG

static|shared

When compiled as a shared library, this will produce the library libpng.so.

If WITH_GD is dynamic, then loading will be deferred until after gd is loaded.


WITH_FREETYPE

static|shared

When compiled as a shared library, this will produce the library libfreetype.so.

If WITH_GD is dynamic, then loading will be deferred until after gd is loaded.


WITH_LIBJPEG

static|shared

When compiled as a shared library, this will produce the library libjpeg.so.

If WITH_GD is dynamic, then loading will be deferred until after gd is loaded.


WITH_ZLIB

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-zlib.so.

When compiled as a dynamic or shared extension, it will produce the library libz.so.


WITH_YAML

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-yaml.so.

When compiled as a dynamic or shared extension, it will produce the library libyaml.so.


WITH_TIDY

static|shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-tidy.so.

When compiled as a dynamic or shared extension, it will produce the library libtidy.so.


WITH_MBSTRING

static|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-mbstring.so.


WITH_ONIGURUMA

static|shared|dynamic

Support library for mbstring.

When compiled as a dynamic or shared library, this will produce the library libonig.so.

If WITH_MBSTRING is dynamic, then loading will be deferred until after mbstring is loaded.


WITH_OPENSSL

shared|dynamic

When compiled as a dynamic extension, this will produce the extension php-8.x-openssl.

When compiled as a dynamic or shared extension, it will produce the libraries libssl.so & libcrypto.so.


WITH_INTL

static|shared|dynamic

When compiled as a dynamic, or shared extension, this will produce the extension php-8.x-intl.so & the following libraries:

  • libicuuc.so
  • libicutu.so
  • libicutest.so
  • libicuio.so
  • libicui18n.so
  • libicudata.so
  • icudt72l.dat