diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php index 7c8b02381b46..41ceb09eb839 100644 --- a/app/Http/Controllers/SetupController.php +++ b/app/Http/Controllers/SetupController.php @@ -1,6 +1,6 @@ $check]); } public function doSetup(StoreSetupRequest $request) { + $check = SystemHealth::check(); + + if ($check['system_status'] === false) { + return; /* This should never be reached. */ + } + $_ENV['APP_KEY'] = config('app.key'); $_ENV['APP_URL'] = $request->input('url'); $_ENV['APP_DEBUG'] = $request->input('debug') ? 'true' : 'false'; @@ -82,9 +87,9 @@ class SetupController extends Controller $fp = fopen($filePath, 'w'); fwrite($fp, $config); fclose($fp); - + /* We need this in some environments that do not have STDIN defined */ - define('STDIN',fopen("php://stdin","r")); + define('STDIN', fopen('php://stdin', 'r')); /* Make sure no stale connections are cached */ \DB::purge('db-ninja-01'); @@ -98,7 +103,7 @@ class SetupController extends Controller if (Account::count() == 0) { $account = CreateAccount::dispatchNow($request->all()); } - + return redirect('/'); } @@ -109,7 +114,6 @@ class SetupController extends Controller */ public function checkDB(CheckDatabaseRequest $request): Response { - $status = SystemHealth::dbCheck($request); info($status); @@ -128,17 +132,15 @@ class SetupController extends Controller */ public function checkMail(CheckMailRequest $request) { - try { $response_array = SystemHealth::testMailServer($request); - if(count($response_array) == 0) + if (count($response_array) == 0) { return response([], 200); - else + } else { return response()->json($response_array, 200); - - - } catch (\Exception $e) { + } +` } catch (\Exception $e) { return response()->json(['message' => $e->getMessage()], 400); } } diff --git a/app/Utils/SystemHealth.php b/app/Utils/SystemHealth.php index d1c72b1ac7f6..2cc0356a187a 100644 --- a/app/Utils/SystemHealth.php +++ b/app/Utils/SystemHealth.php @@ -1,6 +1,6 @@ (bool)$system_health, + 'system_health' => (bool) $system_health, 'extensions' => self::extensions(), - 'php_version' => phpversion(), - 'min_php_version' => self::$php_version, + 'php_version' => [ + 'minimum_php_version' => self::$php_version, + 'current_php_version' => phpversion(), + 'is_okay' => version_compare(phpversion(), self::$php_version, '>='), + ], + 'env_writable' => self::checkEnvWritable(), //'dbs' => self::dbCheck(), //'mail' => self::testMailServer(), - 'env_writable' => self::checkEnvWritable(), ]; } @@ -91,10 +94,10 @@ class SystemHealth if (! config('ninja.db.multi_db_enabled')) { try { $pdo = DB::connection()->getPdo(); - $result[] = [ DB::connection()->getDatabaseName() => true ]; + $result[] = [DB::connection()->getDatabaseName() => true]; $result['success'] = true; } catch (\Exception $e) { - $result[] = [ config('database.connections.' . config('database.default') . '.database') => false ]; + $result[] = [config('database.connections.'.config('database.default').'.database') => false]; $result['success'] = false; } } else { @@ -103,10 +106,10 @@ class SystemHealth try { $pdo = DB::connection()->getPdo(); - $result[] = [ DB::connection()->getDatabaseName() => true ]; + $result[] = [DB::connection()->getDatabaseName() => true]; $result['success'] = true; } catch (\Exception $e) { - $result[] = [ config('database.connections.' . config('database.default') . '.database') => false ]; + $result[] = [config('database.connections.'.config('database.default').'.database') => false]; $result['success'] = false; } } @@ -138,15 +141,17 @@ class SystemHealth ->send(new TestMailServer('Email Server Works!', config('mail.from.address'))); } catch (\Exception $e) { \Log::error($e->getMessage()); + return $e->getMessage(); } if (count(Mail::failures()) > 0) { - \Log::error(print_r(Mail::failures(),1)); + \Log::error(print_r(Mail::failures(), 1)); + return Mail::failures(); } - return response()->json(['message'=>'Success'],200); + return response()->json(['message'=>'Success'], 200); } private static function checkEnvWritable() diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 106a9c1c4c1c..67bf85c28e45 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -3183,4 +3183,12 @@ return [ 'waiting_for_approval' => 'Waiting for approval', 'quote_still_not_approved' => 'This quote is still not approved', 'list_of_credits' => 'Credits', + + 'required_extensions' => 'Required extensions', + 'php_version' => 'PHP version', + 'writable_env_file' => 'Writable .env file', + 'env_not_writable' => '.env file is not writable by the current user.', + 'minumum_php_version' => 'Minimum PHP version', + 'satisfy_requirements' => 'Make sure all requirements are satisfied.', + 'oops_issues' => 'Oops, something doesn\'t look right!', ]; diff --git a/resources/views/setup/_issues.blade.php b/resources/views/setup/_issues.blade.php new file mode 100644 index 000000000000..2dfe3e8617f8 --- /dev/null +++ b/resources/views/setup/_issues.blade.php @@ -0,0 +1,61 @@ +
+ {{ ctrans('texts.satisfy_requirements') }} +
+