Compile A Statically Linked PHP With Swoole and other Extensions.
BTW, It's only for CLI mode.
x86_64
, arm64(aarch64)
, armv7(armv7l)
Linux
https://dl.zhamao.xin/php-bin/file/
install-runtime.sh
to download static php and composer distribution into runtime/
directoryBut this script has some Chinese comments and prompts, if you cannot understand or have to use it in English, I will make an pure international version! :)
bash -c "`curl -fsSL https://raw.githubusercontent.com/crazywhalecc/static-php-cli/master/install-runtime.sh`"
From v1.5.0, we support packing PHP code into a static binary. You can pack your PHP code into a static binary by micro.
You can directly download micro-
prefix file, untar it and you will get file micro.sfx
.
Here's a simple example to use it:
echo "<?php echo 'Hello world' . PHP_EOL;" > code.php
cat micro.sfx code.php > single-app && chmod +x single-app
./single-app
# If packing phar into a static binary, just change code.php to your phar path.
Here's help command to compile it yourself:
git clone https://github.com/crazywhalecc/static-php-cli.git
cd static-php-cli/docker
docker build -t static-php . --build-arg USE_BACKUP_ADDRESS=yes --build-arg COMPILE_PHP_VERSION=7.4.29
After compilation you can use command to get static php binary file:
mkdir dist
docker run --rm -v $(pwd)/dist:/dist/ -it static-php cp php-dist/bin/php /dist/
cd dist
file ./php
If you don't want to use docker, a single script for compiling:
cd docker
# Change PHP Version
export VER_PHP="8.1.7"
# Use Original download link (Default is China mainland mirror link, for others please use 'yes' for original link)
export USE_BACKUP="yes"
./fast-compiler.sh
To customize PHP extensions, edit docker/extensions.txt
file, and rules below:
#
as comment, to mark not installSupport | PHP Ext Name | Version | Comments |
---|---|---|---|
yes | bcmath | * | |
yes | calendar | * | |
yes | ctype | * | |
yes | curl | * | |
yes | dom | * | |
yes | event | >=3.0.8 | author's bitbucket version, not pecl |
yes | exif | * | |
yes | filter | * | |
yes | fileinfo | * | |
yes | gd | * | |
yes | hash | * | |
yes | iconv | * | |
yes | inotify | 3.0.0 | |
yes | json | * | |
yes | libxml | * | |
yes | mbstring | * | |
yes | mongodb | >=1.9.1 | not tested |
mysqli | |||
yes | mysqlnd | * | |
yes | openssl | * | |
yes | pcntl | * | |
yes | pdo | * | |
yes | pdo_mysql | * | |
yes | pdo_sqlite | * | |
pdo_pgsql | * | ||
yes | phar | * | |
yes | posix | * | |
yes | redis | * | |
yes | shmop | * | |
yes | simplexml | * | |
yes | soap | * | |
yes | sockets | * | |
yes | sqlite3 | * | |
yes | swoole | >=4.6.6 | support mysqlnd, sockets, openssl, redis |
yes | tokenizer | * | |
yes | xml | * | |
yes | xmlreader | * | |
yes | xmlwriter | * | |
yes | zip | * | not support bzip2 , lzma compression |
yes | zlib | * |
docker/Dockerfile
edit VER_PHP=x.x.x
to switch PHP version.docker/Dockerfile
edit USE_BACKUP=yes
to use backup download address (download faster if you are not in mainland China).docker/extensions.txt
edit extensions.docker/compile-php.sh
file php_compile_args
function to adjust PHP configure arguments.docker/check-extensions.sh
file check_in_configure
function to adjust extensions' configure arguments.docker/config.json
edit extensions and dependencies version and download links.config.m4
and code.--enable-swoole-curl
.