.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