Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phar Updater Laravel Package

laravel-zero/phar-updater

Backend for the self-update command in Laravel Zero PHARs, forked from Humbug PHAR Updater. Supports SHA-1/256/512 and GitHub Releases strategies, SSL/TLS verification, OpenSSL signatures, and rollback.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: Scope remains unchanged: the package is purpose-built for PHAR-based CLI applications (Laravel Zero and similar single-file tools) and adds no value to conventional web applications, queue workers, or non-PHAR deployments. v2.0.0 tightens the fit rather than broadening it — SHA-512 is now the default signature algorithm, matching the Box PHAR builder's defaults, which removes a previously awkward mismatch for teams that build with Box and ship with phar-updater. GPG signature verification is a net-new capability that materially improves the integrity story for distributed binaries. OpenSSL-based signing has been removed entirely; TLS/HTTPS verification via the OpenSSL extension is unaffected.

Integration feasibility: Low friction for PHAR projects, but the upgrade is not drop-in. Three constraints must be validated before adoption: (1) PHP 8.2 support is dropped, so the host application's runtime floor moves to PHP 8.3+ and Composer constraints must be reconciled; (2) the codebase now uses strict types, so any application that subclasses the package or implements a custom update strategy must re-verify method signatures; (3) the SHA-1 strategy is gone, so configurations pinned to SHA-1 must migrate to SHA-256 or SHA-512 (SHA-512 is the new default). The update(), hasUpdate(), and rollback() surface referenced in the prior assessment is assumed preserved, but this was not verified against the changelog. The new GPG verification path introduces an external runtime dependency on a GPG binary and key availability, which should be confirmed in the target deployment image before committing.

Technical risk: Security posture improved substantially — removal of the deprecated SHA-1 strategy and OpenSSL signing eliminates two insecure/legacy code paths that the prior assessment flagged as misconfiguration risk, and GPG verification raises the bar for supply-chain integrity. Residual risk is concentrated elsewhere: adoption remains very low (16 stars, 0 dependents at last check), so v2.0.0 will have minimal production exposure and no enterprise support or SLA; a major version with three breaking changes compounds that. The GPG addition is a new failure surface (key retrieval, keyserver availability, binary presence in slim containers). Note the evidentiary gap: this review is based on the release notes only, with no package metadata, issue tracker, or dependency data supplied, so version support windows, transitive dependency changes, and real-world breakage reports are unconfirmed.

Key questions:

  • Is update() / hasUpdate() / rollback() behavior unchanged in v2.0.0, beyond signature-verification internals?
  • What is the supported PHP version matrix (8.3 / 8.4 / 8.5) and does a maintained 1.x branch exist for teams unable to move off PHP 8.2?
  • Does GPG verification require a gpg binary on the host, and is a keyserver reachable at update time — or can keys be bundled?
  • Can verification be disabled or is a signature strategy mandatory? What is the behavior when no signing is configured?
  • Are there documented migration steps for custom strategies affected by strict types?
  • What is the release cadence and maintainer commitment from the Laravel Zero organization?

Integration Approach

Stack fit: Composer-installed dependency on Laravel Zero / PHAR CLI tooling only. No fit for HTTP-served Laravel applications. The package now assumes PHP 8.3+, a modern signature algorithm, and — when GPG verification is enabled — a host capable of running GPG operations.

Migration path: Treat this as a planned major-version upgrade, not a patch. Suggested steps: (1) confirm the application's PHP floor can move to 8.3+; (2) audit configuration for any SHA-1 or OpenSSL signing references and rewrite to SHA-256/SHA-512 or GPG; (3) grep for classes extending the package's strategy or updater internals and re-verify signatures against strict types; (4) run the full self-update path end-to-end in staging, including a rollback, before shipping to users; (5) retain a pinned 1.4.x constraint as a rollback option until v2 is proven in production.

Compatibility: Breaking at three points — PHP version floor, strict types (affects extenders only, not typical consumers), and removal of SHA-1/OpenSSL signing (affects configured deployments). The vendor states OpenSSL signing and SHA-1 were never supported in Laravel Zero, which suggests the blast radius for standard Laravel Zero consumers is small; teams with hand-rolled signing setups are the exception and must be inventoried individually. GPG verification is additive for those who want it.

Sequencing: Upgrade in dependency order — PHP runtime first, then the package major version, then signing configuration changes, then CI/CD and release pipeline updates (build the PHAR, sign with the chosen algorithm, publish alongside the release artifacts that the GitHub strategy consumes). Release-pipeline changes should land before the application upgrade in production, since a mismatch between the signing algorithm used at build time and the one expected at update time presents as a runtime verification failure for end users, not a build error.

Operational Impact

Maintenance: Low ongoing effort — the surface is small and the package tracks upstream defaults. The upgrade itself carries one-time cost: runtime bump, signature strategy migration, and validation of custom strategies. Security maintenance improves under v2, since the deprecated SHA-1 path no longer needs to be tracked, patched, or justified in audits. Maintainer risk is unchanged: single-organization stewardship with limited visible activity and no commercial backing.

Support: No SLA, no paid support, community-only via GitHub issues. The low adoption count means self-sufficiency is required — expect to diagnose update failures from source rather than find prior art. GPG-related issues are likely to be thinly documented in the wild given the package's size.

Scaling: Not applicable in the conventional sense; there is no server-side footprint. The relevant scale dimension is distribution: every end-user install performs an update check against GitHub releases, so rate limiting and release-asset availability are the practical ceilings. GPG verification adds per-update cryptographic work and possible key retrieval, which is negligible per invocation but becomes a shared dependency across the whole installed base if a keyserver is used.

Failure modes: Network unavailability or GitHub rate limiting during update checks; disk space exhaustion mid-replacement of the PHAR; signature mismatch (wrong algorithm configured post-migration, stale or rotated keys); GPG binary absent from slim/scratch-based container images; key unreachable at update time; strict-types incompatibility surfacing as a fatal error in a custom strategy; and a failed update leaving a partially written binary — rollback() remains the primary mitigation and should be exercised as part of the standard update flow, not treated as an emergency-only path. The prior assessment's warning about update failures from network and disk conditions still applies and is now joined by the GPG dependency.

Ramp-up: Minimal for a team already shipping a Laravel Zero tool — the API is described as small and explicit. Budget roughly half a day for the v2 migration (PHP floor, config audit, strategy signatures, pipeline signing changes) plus a staging validation pass. Teams new to PHAR signing will need additional time to establish a signing and key-distribution process, since v2 makes signature verification a first-class concern rather than an optional one.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table