diff --git a/app/AppKernel.php b/app/AppKernel.php
index 7770ffd50..9212be758 100644
--- a/app/AppKernel.php
+++ b/app/AppKernel.php
@@ -94,7 +94,6 @@ class AppKernel extends Kernel
private function loadEnvVarsFromParameters(ContainerBuilder $container)
{
- $this->setEnvVarFromParameter($container, 'DATABASE_DRIVER', 'database_driver');
$this->setEnvVarFromParameter($container, 'DATABASE_HOST', 'database_host');
$this->setEnvVarFromParameter($container, 'DATABASE_PORT', 'database_port');
$this->setEnvVarFromParameter($container, 'DATABASE_NAME', 'database_name');
diff --git a/app/config/services.yml b/app/config/services.yml
index 24082bb66..e13bb92bb 100644
--- a/app/config/services.yml
+++ b/app/config/services.yml
@@ -269,7 +269,7 @@ services:
Wallabag\Command\InstallCommand:
arguments:
- $databaseDriver: '%env(DATABASE_DRIVER)%'
+ $databaseUrl: '%env(DATABASE_URL)%'
$defaultSettings: '%wallabag.default_internal_settings%'
$defaultIgnoreOriginInstanceRules: '%wallabag.default_ignore_origin_instance_rules%'
diff --git a/src/Command/InstallCommand.php b/src/Command/InstallCommand.php
index b9a2590dc..8f6c76187 100644
--- a/src/Command/InstallCommand.php
+++ b/src/Command/InstallCommand.php
@@ -7,6 +7,7 @@ use Doctrine\DBAL\Exception\DriverException;
use Doctrine\DBAL\Platforms\MySQLPlatform;
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
use Doctrine\DBAL\Platforms\SqlitePlatform;
+use Doctrine\DBAL\Tools\DsnParser;
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration;
use Doctrine\ORM\EntityManagerInterface;
use FOS\UserBundle\Event\UserEvent;
@@ -41,17 +42,17 @@ class InstallCommand extends Command
private EventDispatcherInterface $dispatcher;
private UserManagerInterface $userManager;
private TableMetadataStorageConfiguration $tableMetadataStorageConfiguration;
- private string $databaseDriver;
+ private string $databaseUrl;
private array $defaultSettings;
private array $defaultIgnoreOriginInstanceRules;
- public function __construct(EntityManagerInterface $entityManager, EventDispatcherInterface $dispatcher, UserManagerInterface $userManager, TableMetadataStorageConfiguration $tableMetadataStorageConfiguration, string $databaseDriver, array $defaultSettings, array $defaultIgnoreOriginInstanceRules)
+ public function __construct(EntityManagerInterface $entityManager, EventDispatcherInterface $dispatcher, UserManagerInterface $userManager, TableMetadataStorageConfiguration $tableMetadataStorageConfiguration, string $databaseUrl, array $defaultSettings, array $defaultIgnoreOriginInstanceRules)
{
$this->entityManager = $entityManager;
$this->dispatcher = $dispatcher;
$this->userManager = $userManager;
$this->tableMetadataStorageConfiguration = $tableMetadataStorageConfiguration;
- $this->databaseDriver = $databaseDriver;
+ $this->databaseUrl = $databaseUrl;
$this->defaultSettings = $defaultSettings;
$this->defaultIgnoreOriginInstanceRules = $defaultIgnoreOriginInstanceRules;
@@ -103,13 +104,24 @@ class InstallCommand extends Command
$status = 'OK!';
$help = '';
- if (!\extension_loaded($this->databaseDriver)) {
+ /** @see \Doctrine\DBAL\DriverManager::$driverSchemeAliases */
+ $params = (new DsnParser([
+ 'mysql' => 'pdo_mysql',
+ 'mysql2' => 'pdo_mysql', // Amazon RDS, for some weird reason
+ 'postgres' => 'pdo_pgsql',
+ 'postgresql' => 'pdo_pgsql',
+ 'pgsql' => 'pdo_pgsql',
+ 'sqlite' => 'pdo_sqlite',
+ 'sqlite3' => 'pdo_sqlite',
+ ]))->parse($this->databaseUrl);
+
+ if (!\extension_loaded($params['driver'])) {
$fulfilled = false;
$status = 'ERROR!';
- $help = 'Database driver "' . $this->databaseDriver . '" is not installed.';
+ $help = 'Database driver "' . $params['driver'] . '" is not installed.';
}
- $rows[] = [\sprintf($label, $this->databaseDriver), $status, $help];
+ $rows[] = [\sprintf($label, $params['driver']), $status, $help];
// testing if connection to the database can be established
$label = 'Database connection';