fix: installer showing feeding failed, as well as adding proper error handling.

This commit is contained in:
Vikas Dongre 2024-02-17 23:38:30 +05:30
parent 6d61ca5cef
commit 9cc6e83819
2 changed files with 31 additions and 24 deletions

View file

@ -29,8 +29,7 @@ if (isset($_POST['checkDB'])) {
try {
$db = new mysqli($_POST['databasehost'], $_POST['databaseuser'], $_POST['databaseuserpass'], $_POST['database'], $_POST['databaseport']);
}
catch (mysqli_sql_exception $e) {
} catch (mysqli_sql_exception $e) {
wh_log($e->getMessage(), 'error');
header('LOCATION: index.php?step=2&message=' . $e->getMessage());
exit();
@ -69,26 +68,26 @@ if (isset($_POST['feedDB'])) {
wh_log('Feeding the Database', 'debug');
$logs = '';
//$logs .= run_console(setenv('COMPOSER_HOME', dirname(__FILE__, 3) . '/vendor/bin/composer'));
//$logs .= run_console('composer install --no-dev --optimize-autoloader');
if (!str_contains(getenv('APP_KEY'), 'base64')) {
$logs .= run_console('php artisan key:generate --force');
} else {
$logs .= "Key already exists. Skipping\n";
}
$logs .= run_console('php artisan storage:link');
$logs .= run_console('php artisan migrate --seed --force');
$logs .= run_console('php artisan db:seed --class=ExampleItemsSeeder --force');
$logs .= run_console('php artisan db:seed --class=PermissionsSeeder --force');
try {
//$logs .= run_console(setenv('COMPOSER_HOME', dirname(__FILE__, 3) . '/vendor/bin/composer'));
//$logs .= run_console('composer install --no-dev --optimize-autoloader');
if (!str_contains(getenv('APP_KEY'), 'base64')) {
$logs .= run_console('php artisan key:generate --force');
} else {
$logs .= "Key already exists. Skipping\n";
}
$logs .= run_console('php artisan storage:link');
$logs .= run_console('php artisan migrate --seed --force');
$logs .= run_console('php artisan db:seed --class=ExampleItemsSeeder --force');
$logs .= run_console('php artisan db:seed --class=PermissionsSeeder --force');
wh_log($logs, 'debug');
wh_log($logs, 'debug');
if (str_contains(getenv('APP_KEY'), 'base64')) {
wh_log('Feeding the Database successful', 'debug');
header('LOCATION: index.php?step=3');
} else {
wh_log('Feeding the Database failed', 'debug');
header('LOCATION: index.php?step=2.5&message=There was an error. Please check the installer.log file in /var/www/controlpanel/storage/logs !');
} catch (\Throwable $th) {
wh_log('Feeding the Database failed', 'error');
header("LOCATION: index.php?step=2.5&message=" . $th->getMessage() . " <br>Please check the installer.log file in /var/www/controlpanel/storage/logs !");
}
}

View file

@ -10,7 +10,7 @@ use Monolog\Handler\StreamHandler;
use Monolog\Logger;
if (!file_exists('../../.env')) {
echo run_console('cp .env.example .env');
echo run_console('cp .env.example .env');
}
(new DotEnv(dirname(__FILE__, 3) . '/.env'))->load();
@ -150,7 +150,8 @@ function checkExtensions(): array
return $not_ok;
}
function removeQuotes($string){
function removeQuotes($string)
{
return str_replace('"', "", $string);
}
@ -162,7 +163,7 @@ function removeQuotes($string){
*/
function setenv($envKey, $envValue)
{
$envFile = dirname(__FILE__, 3).'/.env';
$envFile = dirname(__FILE__, 3) . '/.env';
$str = file_get_contents($envFile);
$str .= "\n"; // In case the searched variable is in the last line without \n
@ -236,9 +237,16 @@ function run_console(string $command, array $descriptors = null, string $cwd = n
$path = dirname(__FILE__, 3);
$descriptors = $descriptors ?? [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']];
$handle = proc_open("cd '$path' && bash -c 'exec -a ServerCPP $command'", $descriptors, $pipes, $cwd, null, $options);
$output = stream_get_contents($pipes[1]);
$exit_code = proc_close($handle);
wh_log('command result: ' . stream_get_contents($pipes[1]), 'debug');
return stream_get_contents($pipes[1]);
if ($exit_code > 0) {
wh_log('command result: ' . $output, 'error');
throw new Exception("There was an error after running command `$command`", $exit_code);
return $output;
} else {
return $output;
}
}
/**
@ -259,7 +267,7 @@ function wh_log(string $message, string $level = 'info', array $context = []): v
switch (strtolower($level)) {
case 'debug': // Only log debug messages if APP_DEBUG is true
if(getenv('APP_DEBUG') === false) return;
if (getenv('APP_DEBUG') === false) return;
$log->debug($message, $context);
break;
case 'info':