1. Go to this page and download the library: Download laravel-zero/phar-updater library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laravel-zero / phar-updater example snippets
/**
* The simplest usage assumes the currently running phar is to be updated and
* that it has been signed with a private key (using OpenSSL).
*
* The first constructor parameter is the path to a phar if you are not updating
* the currently running phar.
*/
use Humbug\SelfUpdate\Updater;
$updater = new Updater();
// Add the below to use the SHA-256 strategy. It will default to SHA-1 if excluded.
$updater->setStrategy(Updater::STRATEGY_SHA256);
$updater->getStrategy()->setPharUrl('https://example.com/current.phar');
$updater->getStrategy()->setVersionUrl('https://example.com/current.version');
try {
$result = $updater->update();
echo $result ? "Updated!\n" : "No update needed!\n";
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
/**
* The second parameter to the constructor must be false if your phars are
* not signed using OpenSSL.
*/
use Humbug\SelfUpdate\Updater;
$updater = new Updater(null, false);
$updater->getStrategy()->setPharUrl('https://example.com/current.phar');
$updater->getStrategy()->setVersionUrl('https://example.com/current.version');
try {
$result = $updater->update();
echo $result ? "Updated!\n" : "No update needed!\n";
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
use Humbug\SelfUpdate\Updater;
$updater = new Updater();
$updater->getStrategy()->setPharUrl('https://example.com/current.phar');
$updater->getStrategy()->setVersionUrl('https://example.com/current.version');
try {
$result = $updater->update();
if ($result) {
$new = $updater->getNewVersion();
$old = $updater->getOldVersion();
printf(
'Updated from SHA-1 %s to SHA-1 %s', $old, $new
);
} else {
echo "No update needed!\n";
}
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
/**
* Other than somewhat different setters for the strategy, all other operations
* are identical.
*/
use Humbug\SelfUpdate\Updater;
$updater = new Updater();
$updater->setStrategy(Updater::STRATEGY_GITHUB);
$updater->getStrategy()->setPackageName('myvendor/myapp');
$updater->getStrategy()->setPharName('myapp.phar');
$updater->getStrategy()->setCurrentLocalVersion('v1.0.1');
try {
$result = $updater->update();
echo $result ? "Updated!\n" : "No update needed!\n";
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
use Humbug\SelfUpdate\Updater;
/**
* Same constructor parameters as you would use for updating. Here, just defaults.
*/
$updater = new Updater();
try {
$result = $updater->rollback();
if (!$result) {
echo "Failure!\n";
exit(1);
}
echo "Success!\n";
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
/**
* Default: Update currently running phar which has been signed.
*/
$updater = new Updater;
/**
* Update currently running phar which has NOT been signed.
*/
$updater = new Updater(null, false);
/**
* Use a strategy other than the default SHA Hash.
*/
$updater = new Updater(null, false, Updater::STRATEGY_GITHUB);
/**
* Update a different phar which has NOT been signed.
*/
$updater = new Updater('/path/to/impersonatephil.phar', false);
use Humbug\SelfUpdate\Updater;
/**
* Configuration is identical in every way for actual updates. You can run this
* across multiple configuration variants to get recent stable, unstable, and dev
* versions available.
*
* This would configure update for an unsigned phar (second constructor must be
* false in this case).
*/
$updater = new Updater(null, false);
$updater->setStrategy(Updater::STRATEGY_GITHUB);
$updater->getStrategy()->setPackageName('myvendor/myapp');
$updater->getStrategy()->setPharName('myapp.phar');
$updater->getStrategy()->setCurrentLocalVersion('v1.0.1');
try {
$result = $updater->hasUpdate();
if ($result) {
printf(
'The current stable build available remotely is: %s',
$updater->getNewVersion()
);
} elseif (false === $updater->getNewVersion()) {
echo "There are no stable builds available.\n";
} else {
echo "You have the current stable build installed.\n";
}
} catch (\Exception $e) {
echo "Well, something happened! Either an oopsie or something involving hackers.\n";
exit(1);
}
$updater = new Updater(null, false);
$updater->setStrategyObject(new MyStrategy);
use Humbug\SelfUpdate\Strategy\DirectDownloadStrategyAbstract;
class ExampleDirectDownloadStrategy extends DirectDownloadStrategyAbstract
{
public function getDownloadUrl(): string
{
return 'https://example.com/latest/example.phar';
}
}
use Illuminate\Support\Facades\Http;
use Humbug\SelfUpdate\Strategy\DirectDownloadStrategyAbstract;
class ExampleDirectDownloadStrategy extends DirectDownloadStrategyAbstract
{
/** {@inheritdoc} */
public function getCurrentRemoteVersion(Updater $updater)
{
return Http::get('https://example.com/example-releases.json')->object()->latest_version;
}
public function getDownloadUrl(): string
{
return "https://example.com/{$this->getCurrentRemoteVersion()}/example.phar";
}
}
bash
php <application> app:install self-update
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.