Download the PHP package laravel-zero/phar-updater without Composer

On this page you can find all versions of the php package laravel-zero/phar-updater. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package phar-updater

PHAR Updater

Latest Version on Packagist Build Status Static Analysis Total Downloads

This is a fork of the Humbug PHAR Updater for internal use in Laravel Zero.

The backend for the self-update command in Laravel Zero PHARs. Originally created by Humbug.

Table of Contents

Introduction

The laravel-zero/phar-updater package has the following features:

Apart from the detailed documentation below, you can find the package being used within Laravel Zero's self-update component.

Installation

Via Composer

Via the Laravel Zero component installer

The package utilises PHP Streams for remote requests, so it will require the openssl extension and the allow_url_open setting to both be enabled. Support for curl will follow in time.

Usage

The default update strategy uses an SHA-1 hash of the current remote phar in a version file, and will update the local phar when this version is changed. There is also a Github strategy which tracks Github Releases where you can upload a new phar file for a release.

Basic SHA-1 / SHA-256 / SHA-512 Strategy

NOTE: The SHA-1 strategy is marked as deprecated, you should prefer the SHA-256 or SHA-512 strategies instead.

Create your self-update command, or even an update command for some other phar other than the current one, and include this.

If you are not signing the phar using OpenSSL:

If you need version information:

See the Update Strategies section for an overview of how to set up the SHA-1 or SHA-256 strategy. It's a simple to maintain choice for development or nightly versions of phars which are released to a specific numbered version.

Github Release Strategy

Beyond development or nightly phars, if you are releasing numbered versions on Github (i.e. tags), you can upload additional files (such as phars) to include in the Github Release.

Package name refers to the name used by Packagist, and phar name is the phar's file name assumed to be constant across versions.

It's left to the implementation to supply the current release version associated with the local phar. This needs to be stored within the phar and should match the version string used by Github. This can follow any standard practice with recognisable pre- and postfixes, e.g. v1.0.3, 1.0.3, 1.1, 1.3rc, 1.3.2pl2.

If you wish to update to a non-stable version, for example where users want to update according to a development track, you can set the stability flag for the Github strategy. By default this is set to stable or, in constant form, \Humbug\SelfUpdate\Strategy\GithubStrategy::STABLE:

If you want to ignore stability and just update to the most recent version regardless:

Rollback Support

The Updater automatically copies a backup of the original phar to myname-old.phar. You can trigger a rollback quite easily using this convention:

As users may have diverse requirements in naming and locating backups, you can explicitly manage the precise path to where a backup should be written, or read from using the setBackupPath() function when updating a current phar or the setRestorePath() prior to triggering a rollback. These will be used instead of the simple built in convention.

Constructor Parameters

The Updater constructor is fairly simple. The three basic variations are:

Check For Updates

You can tell users what updates are available, across any stability track, by making use of the hasUpdate method. This gets the most recent remote version for a stability level, compares it to the current version, and returns a simple true/false result, i.e. it will only be false where the local version is identical or where there was no remote version for that stability level at all. You can easily differentiate between the two false states as the new version will be a string where a version did exist, but false if not.

Avoid Post Update File Includes

Updating a currently running phar is made trickier since, once replaced, attempts to load files from it within a process originating from an older phar is likely to create an internal corruption of phar error. For example, if you're using Symfony Console and have created an event dispatcher for your commands, the lazy loading of some event classes will have this impact.

The solution is to disable or remove the dispatcher for your self-update command.

In general, when writing your self-update CLI commands, either pre-load any classes likely needed prior to updating, or disable their loading if not essential.

Custom Update Strategies

All update strategies revolve around checking for updates, and downloading updates. The actual work behind replacing local files and backups is handled separately. To create a custom strategy, you can implement Humbug\SelfUpdate\Strategy\StrategyInterface and pass a new instance of your implementation post-construction.

The similar setStrategy() method is solely used to pass flags matching internal strategies.

Update Strategies

SHA-1 / SHA-256 / SHA-512 Hash Synchronisation

The phar-updater package supports an update strategy where phars are updated according to the SHA-1, SHA-256, or SHA-512 hash of the current PHAR file available remotely. This assumes the existence of only two to three remote files:

The myname.phar is the most recently built phar.

The myname.version contains the SHA-1, SHA-256, or SHA-512 hash of the most recently built phar where the hash is the very first string (if not the only string). You can generate this quite easily from bash using:

Remember to regenerate the version file for each new phar build you want to distribute. Using sha1sum/sha256sum/sha512sum adds additional data after the hash, but it's fine since the hash is the first string in the file which is the only requirement.

If using OpenSSL signing, which is very much recommended, you can also put the public key online as myname.phar.pubkey , for the initial installation of your phar. However, please note that phar-updater itself will never download this key, will never replace this key on your filesystem, and will never install a phar whose signature cannot be verified by the locally cached public key.

If you need to switch keys for any reason whatsoever, users will need to manually download a new phar along with the new key. While that sounds extreme, it's generally not a good idea to allow for arbitrary key changes that occur without user knowledge. The openssl signing has no mechanism such as a central authority, or a browser's trusted certificate stash with which to automate such key changes in a safe manner.

Github Releases

When tagging new versions on Github, these are created and hosted as Github Releases which allow you to attach a changelog and additional file downloads. Using this Github feature allows you to attach new phars to releases, associating them with a version string that is published on Packagist.

Taking advantage of this architecture, the Github Strategy for updating phars can compare the existing local phar's version against remote release versions and update to the most recent stable (or unstable) version from Github.

At present, it's assume that phar files all bear the same name across releases, i.e. just a plain name like myapp.phar without versioning information in the file name. You can also upload your phar's public key in the same way. Using the established convention of being the phar name with .pubkey appended, e.g. myapp.phar would be matched with myapp.phar.pubkey.

You can read more about Github releases here.

While you can draft a release, Github releases are created automatically whenever you create a new git tag. If you use git tagging, you can go to the matching release on Github, click the Edit button and attach files. It's recommended to do this as soon as possible after tagging to limit the window whereby a new release exists without an updated phar attached.

Direct Downloads

PHAR Updater provides an abstract Humbug\SelfUpdate\Strategy\DirectDownloadStrategyAbstract class which can be used to quickly and easily create download strategies with just a getDownloadUrl(): string method.

For example, if a PHAR downloads it's latest updates from https://example.com/latest/example.phar, you can utilise this with the following code:

The abstract strategy also supports overriding the getCurrentRemoteVersion() method, so that you could add a custom HTTP call or other method for seeing what the latest version is. By default, it returns the string latest.

You can also set and retrieve the current local version using the setCurrentLocalVersion() and getCurrentLocalVersion() methods, which will be used for comparison with the remote version.


All versions of phar-updater with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package laravel-zero/phar-updater contains the following files

Loading the files please wait ....