mirror of
https://github.com/snipe/snipe-it.git
synced 2025-02-02 08:21:09 -08:00
Add remote requirements checking to upgrade.php
quoted from https://github.com/snipe/snipe-it/pull/14127 There is a race condition in the upgrade.php file where it can't currently know the hard requirements for the version it's upgrading to until it does a git pull. By that time, it will have pulled new source code that possibly relies on an incompatible version of php, leaving you with a broken installation. Example: You're running v6.2.x on PHP 7.4, which is fine. v7 requires PHP 8.1 or 8.2, but we couldn't know that when we released v6. or v5 for that matter. We could change the requirements in the most-recent v6 version of upgrade.php, but that doesn't help anyone who doesn't upgrade first to the most recent v6. With this change, we implement fetching and incorporating the requirements data from the remote file. It's just fetching/decoding a couple of json values that replace the hard-coded version requirements. We move the branch checking higher than the php version checking so that we can use the defined/overridden $branch to decide what branch to pull the requirements from.
This commit is contained in:
parent
25c9f8e038
commit
32605578dd
26
upgrade.php
26
upgrade.php
|
@ -1,8 +1,24 @@
|
||||||
<?php
|
<?php
|
||||||
(PHP_SAPI !== 'cli' || isset($_SERVER['HTTP_USER_AGENT'])) && die('Access denied.');
|
(PHP_SAPI !== 'cli' || isset($_SERVER['HTTP_USER_AGENT'])) && die('Access denied.');
|
||||||
|
|
||||||
$php_min_works = '7.4.0';
|
$app_environment = 'develop';
|
||||||
$php_max_wontwork = '8.2.0';
|
|
||||||
|
// Check if a branch or tag was passed in the command line,
|
||||||
|
// otherwise just use master
|
||||||
|
(array_key_exists('1', $argv)) ? $branch = $argv[1] : $branch = 'master';
|
||||||
|
|
||||||
|
|
||||||
|
// Fetching most current upgrade requirements from github. Read more here: https://github.com/snipe/snipe-it/pull/14127
|
||||||
|
$remote_requirements_file = "https://raw.githubusercontent.com/snipe/snipe-it/$branch/.upgrade_requirements.json";
|
||||||
|
$upgrade_requirements = json_decode(file_get_contents($remote_requirements_file), true);
|
||||||
|
|
||||||
|
if (! $upgrade_requirements) {
|
||||||
|
die("\nERROR: Failed to retrieve remote requirements from $remote_requirements_file\nExiting.\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
$php_min_works = $upgrade_requirements['php_min_version'];
|
||||||
|
$php_max_wontwork = $upgrade_requirements['php_max_wontwork'];
|
||||||
|
// done fetching requirements
|
||||||
|
|
||||||
|
|
||||||
if ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') || (!function_exists('posix_getpwuid'))) {
|
if ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') || (!function_exists('posix_getpwuid'))) {
|
||||||
|
@ -17,12 +33,6 @@ if ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') || (!function_exists('posix_get
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$app_environment = 'develop';
|
|
||||||
|
|
||||||
// Check if a branch or tag was passed in the command line,
|
|
||||||
// otherwise just use master
|
|
||||||
(array_key_exists('1', $argv)) ? $branch = $argv[1] : $branch = 'master';
|
|
||||||
|
|
||||||
echo "--------------------------------------------------------\n";
|
echo "--------------------------------------------------------\n";
|
||||||
echo "WELCOME TO THE SNIPE-IT UPGRADER! \n";
|
echo "WELCOME TO THE SNIPE-IT UPGRADER! \n";
|
||||||
echo "--------------------------------------------------------\n\n";
|
echo "--------------------------------------------------------\n\n";
|
||||||
|
|
Loading…
Reference in a new issue