Skip to content

Releases: DaFa66/phpup

phpup 2.5.0 (Windows)

Choose a tag to compare

@DaFa66 DaFa66 released this 22 Oct 11:01

phpup 2.5.0 (Windows)

phpup.ps1 2.5.0. A feature release that adds a machine-readable CLI, so a GUI, tray app or
CI job can drive phpup without the interactive dashboard.

Contract: docs/CLI.md.

Install

irm https://raw.githubusercontent.com/DaFa66/phpup/HEAD/phpup-boot.ps1 | iex

Nothing changes if you already run phpup: no arguments behaves exactly as before and the
dashboard is untouched.

Added

  • status, start, stop, restart, version, help verbs, with --json / -Json
    emitting a stable schema on stdout
  • --fast for polling, and --watch N: one long-lived process emitting an NDJSON status
    line every N seconds. A fresh PowerShell process costs about 0.85s, so spawning per tick
    would hold roughly 40% of a core at a 2s interval; one process with lazy probes costs about
    237ms a tick
  • --quiet, plus documented exit codes: 0 ok, 1 failed, 2 usage, 3 not installed,
    4 elevation required, 5 port conflict. A caller can relaunch elevated or name the foreign
    process instead of parsing English
  • services.items[] in the payload: per-service {name, registered, enabled}
  • Version shown in the dashboard banner wordmark, beside the logo

Fixed

  • Windows 11 reported as "Windows 10": the registry still stores
    ProductName = "Windows 10 Pro" on Windows 11, so the build number now decides (22000 and
    above is 11)
  • platform.distro was null in --fast and kept its "Windows " prefix in full mode
  • status and start could take 4 to 8 seconds before doing anything:
    Get-NetTCPConnection measured 3.8s cold on every fresh process, replaced with
    System.Net.NetworkInformation (~60ms), with the netstat parse kept as a fallback
  • Get-Process -Name replaced with .NET lookups: Windows PowerShell 5.1 writes an
    OutOfMemoryException stack trace to the error stream when the name matches nothing, which
    polluted redirected stderr
  • Unreadable PIDs when unelevated: service mode now asks the SCM (sc queryex), the fast
    path uses the process table, which needs no elevation
  • $DOWNLOAD_CACHE ignored a custom install path and pointed at C:\phpup regardless

Desktop panel (separate release)

The Rust + egui control panel that reads this payload is published on its own chain, as
panel 0.1.0 beta, with a
zip and install.ps1. It is not bundled here: the script is the single artefact for the stack,
the panel is optional.

Upgrading

u

u updates packages and brings the stack up. If the stack does not come up it now says so,
instead of claiming UPDATE COMPLETE!.

phpup 1.3.0 (macOS/Linux)

Choose a tag to compare

@DaFa66 DaFa66 released this 22 Oct 11:01

phpup 1.3.0 (macOS/Linux)

phpup.sh 1.3.0. Feature release adding the machine-readable CLI to the macOS and Linux
script, matching phpup.ps1 2.5.0 so one caller works on every platform.

Contract: docs/CLI.md.

Install

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/DaFa66/phpup/v1.3.0-nix/phpup.sh)"

Backend selection is unchanged: Homebrew by default on macOS, apt on Debian/Ubuntu, and
PHPPUP_BACKEND=port still selects MacPorts. No arguments behaves exactly as before.

Added

  • status, start, stop, restart, version, help verbs, with --json emitting the
    same schema the Windows script emits
  • --fast for polling, and --watch N: one long-lived process emitting an NDJSON status line
    every N seconds
  • --quiet, plus documented exit codes: 0 ok, 1 failed, 2 usage, 3 not installed,
    4 elevation required, 5 port conflict
  • services.items[] in the payload: per-service {name, registered, enabled}, so registered
    services are visible on systemd and Homebrew alike
  • Single source of truth for derived paths, and the header comment is the only place the
    version is written: both --version paths read it

Fixed

  • u claimed "[ OK ] UPDATE COMPLETE!" even when the stack did not come up: the line was
    printed unconditionally after all three backend branches. Each start_services call now
    sets update_ok=0 on failure, and the closing message distinguishes "packages updated and
    stack up" from "packages updated, stack did not come up"
  • The apt path could block on a dpkg conffile prompt: apt upgrade was the only apt call
    in the script without DEBIAN_FRONTEND=noninteractive, so a php.ini or httpd.conf
    question could stall an unattended run and swallow whatever was queued on stdin
  • Linux paid about 420ms for brew --version on every run: the Homebrew probe ran
    unconditionally, including on apt systems. Now gated on USE_APT == 0; interactive
    status on Ubuntu went from 0.74s to 0.34s
  • PHP version detection spawned three binaries per status call: config values are used
    first, with probing as a per-component fallback

Verified by

PHP 8.5.12 upgrade path on Debian 13 and Ubuntu 24.04, port pins checked against
ports.macports.org for the macOS side.

phpup panel 0.1.0 beta (Windows x64)

Pre-release

Choose a tag to compare

@DaFa66 DaFa66 released this 22 Oct 10:44

phpup desktop panel 0.1.0 beta (Windows x64)

Beta of the desktop control surface for phpup: Rust + egui, one static binary, no webview and
no Node toolchain. Everything it shows and does comes from the phpup CLI, so the scripts
remain the single source of truth.

Install

  1. Download phpup-panel-0.1.0-beta-win-x64.zip below and extract it.
  2. Run .\install.ps1 (add -NoStart to install without launching it).
  3. It copies phpup-panel.exe into <install_path>\bin, default C:\phpup\bin, and prints
    the SHA256 of what it installed. No elevation, no registry writes.

Requires phpup 2.5.0 or later for the CLI verbs. On an older phpup.ps1 the panel says
"not usable" and waits rather than guessing.

Highlights

  • Live component cards driven by phpup.ps1 status --watch --fast
  • Start / Restart / Stop, with phpup's stderr in a terminal-style pane
  • Tray icon and close-to-tray
  • Quick links (localhost, phpinfo, phpMyAdmin, logs, www folder) beneath the cards
  • Settings -> Window -> Start hidden in the tray: no window and no taskbar button at
    launch, tray icon only, which is what an autostart wants. Off by default.
  • Settings -> Startup -> Start with Windows: per-user Run entry written with reg.exe,
    no elevation. The checkbox mirrors the registry, so it cannot claim what Windows will not do.
  • Settings -> Services: per-service startup type Auto / Disabled via sc.exe config.
    Settings manages boot behaviour only; Start / Restart / Stop are the process controls.
  • Optional always-elevated mode: per action, or the whole panel with
    phpup - as administrator in the title bar

Known limits in this beta

  • Windows x64 only. macOS and Linux are planned. phpup.sh already emits the same
    schema-1 status payload, so the data path is portable; the remaining work is the action
    layer (service control, elevation, autostart) and the builds.
  • No embedded version metadata in the binary yet. Identify a build by the zip name or the
    checksum below.
  • Unsigned binary, so SmartScreen warns on first run.
  • Per-action elevation: a UAC prompt for each service change unless the panel is run
    elevated.
  • Tray visibility depends on the Windows tray overflow area. If the icon is tucked behind
    the chevron, the panel looks like it never started; pin it to the tray.

Verify the download

SHA256 (phpup-panel-0.1.0-beta-win-x64.zip) = f1db831ff488a61a7fc483113627348c3b91c739ac09829cd60aab44cff23faa

install.ps1 prints the checksum of the installed exe as well.

Cross-platform release (Windows)

Choose a tag to compare

@DaFa66 DaFa66 released this 11 Aug 23:47

See CHANGELOG.md for details.

Rebrand from getPHP to phpup (Windows)

Choose a tag to compare

@DaFa66 DaFa66 released this 11 Aug 23:47

See CHANGELOG.md for details.

Cross-platform release (macOS/Linux)

Choose a tag to compare

@DaFa66 DaFa66 released this 11 Aug 23:47

See CHANGELOG.md for details.

First stable (macOS/Linux)

Choose a tag to compare

@DaFa66 DaFa66 released this 11 Aug 23:48
v1.0.0-nix

v1.0.0-nix: First stable (macOS/Linux)

Cross-series PHP upgrade (macOS/Linux)

Choose a tag to compare

@DaFa66 DaFa66 released this 11 Aug 23:47

See CHANGELOG.md for details.

v1.0.0 (Windows) - Initial Release

Pre-release

Choose a tag to compare

@DaFa66 DaFa66 released this 31 Jul 22:58

Windows: Initial PowerShell release. Interactive dashboard: install, update, start/stop, restart, delete. Apache, PHP, MariaDB, phpMyAdmin. VC++ auto-detection. Config persistence. PATH management. Database backup on delete.

First release.