static-php-cli/README-en.md
2021-07-28 14:28:43 +08:00

5.3 KiB
Executable File

static-php-cli

Compile A Statically Linked PHP With Swoole and other Extensions.

BTW, It's only for CLI mode.

version

Compilation Requirements

  • Tested on x86_64 and aarch64 platform, others have not tested.
  • Docker required (or alpine linux 3.12+)
  • Supporting PHP version from 7.2 to 8.0

Running Requirements

Linux

Start

You can directly download static binary in Release.

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 .

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

To customize PHP extensions, edit docker/extensions.txt file, and rules below:

  • Use # as comment, to mark not install
  • extensions name uses lower case, and default file contains all supported extensions, if u need other extensions, consider write an Issue

Supported PHP extensions

Support PHP Ext Name Version Comments
yes bcmath *
yes calendar *
yes ctype *
yes curl *
yes dom *
event
yes filter *
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 *
pdo_pgsql *
yes phar *
yes posix *
yes redis *
yes simplexml *
yes sockets *
yes sqlite3 *
yes swoole >=4.6.6 support mysqlnd, sockets, openssl, redis
yes tokenizer *
yes xml *
yes xmlreader *
yes xmlwriter *
zip
yes zlib *

Customization

  • 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.

Current Issue

  • Not support event(libevent), because of its config.m4 and code.
  • Swoole not support --enable-swoole-curl.
  • Not support readline, maybe caused by ncurses library.
  • Not support curl (solved)
  • Customize extensions to compile
  • php.ini integration
  • i18n (including README and scripts)

Running preview

After-compile status

image

Run Workerman directly

image

References