wallabag/wallabag · error · RuntimeException

Some system requirements are not fulfilled. Please check out

Error message

Some system requirements are not fulfilled. Please check output messages and fix them.

What it means

wallabag:install step 1 walks a checklist of PHP functions and extensions, building a status table; if any required item is missing (function_exists fails, etc.) the command throws RuntimeException after printing the table, aborting installation. The table rows above the exception tell you exactly which 'Checked' item has 'ERROR!' status and the Recommendation column names the needed function.

Source

Thrown at src/Command/InstallCommand.php:210

        foreach ($this->functionExists as $functionRequired) {
            $label = '<comment>' . $functionRequired . '</comment>';
            $status = '<info>OK!</info>';
            $help = '';

            if (!\function_exists($functionRequired)) {
                $fulfilled = false;
                $status = '<error>ERROR!</error>';
                $help = 'You need the ' . $functionRequired . ' function activated';
            }

            $rows[] = [$label, $status, $help];
        }

        $this->io->table(['Checked', 'Status', 'Recommendation'], $rows);

        if (!$fulfilled) {
            throw new \RuntimeException('Some system requirements are not fulfilled. Please check output messages and fix them.');
        }

        $this->io->success('Success! Your system can run wallabag properly.');

        return $this;
    }

    private function getDatabaseDriver(): string
    {
        $driver = $this->entityManager->getConnection()->getParams()['driver'] ?? null;

        return match ($driver) {
            'pdo_mysql', 'mysqli' => 'pdo_mysql',
            'pdo_pgsql', 'pgsql' => 'pdo_pgsql',
            'pdo_sqlite', 'sqlite3' => 'pdo_sqlite',
            default => throw new \RuntimeException('Unsupported database driver: ' . (string) $driver),
        };
    }

View on GitHub (pinned to efe93850ad)

Solutions

  1. Read the printed table: every row with 'ERROR!' names the missing function and the Recommendation column tells you what to enable
  2. Install/enable the reported PHP extensions (e.g. apt install php-xml php-curl php-mbstring php-intl php-gd, then restart PHP-FPM/web server)
  3. Remove the reported functions from disable_functions in php.ini if your policy allows
  4. Re-run php bin/console wallabag:install to confirm the check passes

Example fix

// before: php.ini
disable_functions = curl_init,dom_import_simplexml
// after: php.ini (then restart PHP)
disable_functions =
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-flight the same checks before invoking the installer
$required = ['curl_init', 'mb_strlen', 'iconv', 'simplexml_load_string'];
$missing = array_filter($required, static fn ($f) => !function_exists($f));
if ($missing) {
    fwrite(STDERR, 'Missing PHP functions: ' . implode(', ', $missing) . "\n");
    exit(1);
}

Try / catch

try {
    $process->run('php bin/console wallabag:install');
} catch (ProcessFailedException $e) {
    $output = $process->getOutput();
    // parse the 'ERROR!' rows from the requirement table, install the named
    // extensions/functions, restart PHP, then re-run install
}

Prevention

When it happens

Trigger: Running php bin/console wallabag:install on a host missing PHP extensions wallabag requires (e.g. XML, curl, intl, gd related functions disabled); php.ini disabling functions via disable_functions; using an unsupported PHP build.

Common situations: Shared hosting with a trimmed PHP; Docker images missing php-* extensions; sysadmin hardening php.ini with disable_functions; PHP version mismatch after upgrade re-enabling a minimal module set.

Related errors


AI-assisted analysis of wallabag/wallabag@efe93850ad (2026-08-21). Data as JSON: /api/errors/fd4df871713ad9ab. Report an issue: GitHub.