1
0
mirror of https://github.com/freescout-helpdesk/freescout.git synced 2024-11-24 19:33:07 +01:00

Check max PHP version in the installer

This commit is contained in:
FreeScout 2020-03-07 03:31:47 -08:00
parent dc567ea94f
commit c4bf136fbd
4 changed files with 130 additions and 2 deletions

View File

@ -105,6 +105,7 @@
"vendor/axn/laravel-laroute/src/Routes/Collection.php",
"vendor/webklex/laravel-imap/src/IMAP/Message.php",
"vendor/webklex/laravel-imap/src/IMAP/Client.php",
"vendor/rachidlaasri/laravel-installer/src/Helpers/RequirementsChecker.php",
"vendor/rachidlaasri/laravel-installer/src/Helpers/PermissionsChecker.php",
"vendor/rachidlaasri/laravel-installer/src/Helpers/EnvironmentManager.php",
"vendor/rachidlaasri/laravel-installer/src/Helpers/FinalInstallManager.php",

View File

@ -18,6 +18,7 @@ return [
*/
'core' => [
'minPhpVersion' => '7.0.0',
'maxPhpVersion' => '7.3.99',
],
'final' => [
'key' => false,

View File

@ -0,0 +1,125 @@
<?php
namespace RachidLaasri\LaravelInstaller\Helpers;
class RequirementsChecker
{
/**
* Minimum PHP Version Supported (Override is in installer.php config file).
*
* @var _minPhpVersion
*/
private $_minPhpVersion = '7.0.0';
/**
* Check for the server requirements.
*
* @param array $requirements
* @return array
*/
public function check(array $requirements)
{
$results = [];
foreach($requirements as $type => $requirement)
{
switch ($type) {
// check php requirements
case 'php':
foreach($requirements[$type] as $requirement)
{
$results['requirements'][$type][$requirement] = true;
if(!extension_loaded($requirement))
{
$results['requirements'][$type][$requirement] = false;
$results['errors'] = true;
}
}
break;
// check apache requirements
case 'apache':
foreach ($requirements[$type] as $requirement) {
// if function doesn't exist we can't check apache modules
if(function_exists('apache_get_modules'))
{
$results['requirements'][$type][$requirement] = true;
if(!in_array($requirement,apache_get_modules()))
{
$results['requirements'][$type][$requirement] = false;
$results['errors'] = true;
}
}
}
break;
}
}
return $results;
}
/**
* Check PHP version requirement.
*
* @return array
*/
public function checkPHPversion(string $minPhpVersion = null)
{
$minVersionPhp = $minPhpVersion;
$currentPhpVersion = $this->getPhpVersionInfo();
$supported = false;
if ($minPhpVersion == null) {
$minVersionPhp = $this->getMinPhpVersion();
}
if (version_compare($currentPhpVersion['version'], $minVersionPhp) >= 0) {
$supported = true;
}
if (!version_compare($currentPhpVersion['version'], config('installer.core.maxPhpVersion'), '<=')) {
$supported = false;
}
$phpStatus = [
'full' => $currentPhpVersion['full'],
'current' => $currentPhpVersion['version'],
'minimum' => $minVersionPhp,
'supported' => $supported
];
return $phpStatus;
}
/**
* Get current Php version information
*
* @return array
*/
private static function getPhpVersionInfo()
{
$currentVersionFull = PHP_VERSION;
preg_match("#^\d+(\.\d+)*#", $currentVersionFull, $filtered);
$currentVersion = $filtered[0];
return [
'full' => $currentVersionFull,
'version' => $currentVersion
];
}
/**
* Get minimum PHP version ID.
*
* @return string _minPhpVersion
*/
protected function getMinPhpVersion()
{
return $this->_minPhpVersion;
}
}

View File

@ -14,11 +14,12 @@
@foreach($requirements['requirements'] as $type => $requirement)
<ul class="list">
<li class="list__item list__title {{ $phpSupportInfo['supported'] ? 'success' : 'error' }}">
<strong>{{ ucfirst($type) }}</strong>
<strong>@if ($type != 'php'){{ ucfirst($type) }}@else PHP @endif</strong>
@if($type == 'php')
<strong>
<small>
(version {{ $phpSupportInfo['minimum'] }} required)
<?php /*(version {{ $phpSupportInfo['minimum'] }} required)*/ ?>
(7.0 - 7.3)
</small>
</strong>
<span class="float-right">