mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-03 23:05:41 +08:00
120 lines
3.6 KiB
Markdown
120 lines
3.6 KiB
Markdown
# Installation
|
|
|
|
## Requirements
|
|
|
|
| Platform | Architecture | Notes |
|
|
|---|---|---|
|
|
| Linux | x86_64, aarch64 | Major distros supported (Alpine, Debian/Ubuntu, RHEL/CentOS, etc.) |
|
|
| macOS | x86_64 (Intel), arm64 (Apple Silicon) | macOS 12 or later |
|
|
| Windows | x86_64 | Windows 10 Build 17063 or later |
|
|
|
|
::: tip
|
|
Both glibc-based distros (Debian, Ubuntu, Arch, etc.) and musl-based ones (Alpine) are supported on Linux.
|
|
The `doctor` command will detect your environment and guide you through installing the right toolchain if needed.
|
|
:::
|
|
|
|
Pick the installation method that fits your use case:
|
|
|
|
| Method | Best for |
|
|
|---|---|
|
|
| Pre-built binary | Most users — download and run, no dependencies |
|
|
| From source | Contributors, or anyone who needs to modify core build logic |
|
|
| Vendor mode | Integrating StaticPHP into an existing PHP project |
|
|
|
|
## Pre-built binary
|
|
|
|
`spc` has no runtime dependencies — download the binary for your platform and it's ready to go.
|
|
|
|
> Fun fact: `spc` itself is a static PHP binary built with StaticPHP. We use StaticPHP to build StaticPHP's own build tool.
|
|
|
|
::: code-group
|
|
```shell [Linux x86_64]
|
|
curl -#fSL https://dl.static-php.dev/v3/spc-bin/nightly/spc-linux-x86_64 -o spc
|
|
```
|
|
```shell [Linux arm64]
|
|
curl -#fSL https://dl.static-php.dev/v3/spc-bin/nightly/spc-linux-aarch64 -o spc
|
|
```
|
|
```shell [macOS x86_64]
|
|
curl -#fSL https://dl.static-php.dev/v3/spc-bin/nightly/spc-macos-x86_64 -o spc
|
|
```
|
|
```shell [macOS arm64]
|
|
curl -#fSL https://dl.static-php.dev/v3/spc-bin/nightly/spc-macos-aarch64 -o spc
|
|
```
|
|
```powershell [Windows x86_64]
|
|
curl.exe -#fSL https://dl.static-php.dev/v3/spc-bin/nightly/spc-windows-x86_64.exe -o spc.exe
|
|
```
|
|
:::
|
|
|
|
On Linux and macOS, mark the binary as executable before running it:
|
|
|
|
```bash
|
|
chmod +x spc && ./spc --version
|
|
```
|
|
|
|
## From source
|
|
|
|
This is the right path if you want to contribute to StaticPHP, or need to modify the core registry and build scripts. You'll need PHP >= 8.4, Composer, and the `mbstring,posix,pcntl,iconv,phar,zlib` extensions.
|
|
|
|
```bash
|
|
git clone https://github.com/crazywhalecc/static-php-cli.git --branch v3
|
|
cd static-php-cli
|
|
composer install
|
|
```
|
|
|
|
If you don't have PHP or Composer installed, use the bundled setup script to install a self-contained runtime:
|
|
|
|
::: code-group
|
|
```bash [Linux / macOS]
|
|
bin/setup-runtime
|
|
```
|
|
```powershell [Windows]
|
|
.\bin\setup-runtime.ps1
|
|
.\bin\setup-runtime.ps1 add-path # add runtime/ to PATH
|
|
```
|
|
:::
|
|
|
|
The script downloads `php` and `composer` into a `runtime/` subdirectory. You then have two options:
|
|
|
|
1. **Call them directly** (no PATH changes needed):
|
|
```bash
|
|
runtime/php bin/spc --help
|
|
runtime/php runtime/composer install
|
|
```
|
|
|
|
2. **Add `runtime/` to your PATH** so you can use `php`, `composer`, and `bin/spc` without prefixes:
|
|
```bash
|
|
export PATH="/path/to/static-php-cli/runtime:$PATH"
|
|
# Add this to ~/.bashrc or ~/.zshrc to make it permanent
|
|
```
|
|
|
|
## Vendor mode
|
|
|
|
If you already have a PHP project and want to call StaticPHP's build APIs directly, or use a custom registry to support private libraries and extensions, pull it in as a Composer dependency:
|
|
|
|
```bash
|
|
composer require crazywhalecc/static-php-cli
|
|
```
|
|
|
|
See the [Extending StaticPHP](../develop/extending/) guide for details.
|
|
|
|
## Verify your build environment
|
|
|
|
> **Vendor mode users can skip this step.**
|
|
|
|
Once installed, run `doctor` to check that your system has the required build tools (cmake, make, a C compiler, etc.):
|
|
|
|
```bash
|
|
# Using the spc binary
|
|
./spc doctor
|
|
# From source
|
|
bin/spc doctor
|
|
```
|
|
|
|
If anything is missing, `--auto-fix` will attempt to install it for you:
|
|
|
|
```bash
|
|
./spc doctor --auto-fix
|
|
```
|
|
|
|
Once `doctor` reports everything is good, head over to [First Build](./first-build).
|