diff options
| author | 2017-02-28 21:12:47 +0100 | |
|---|---|---|
| committer | 2017-02-28 21:12:47 +0100 | |
| commit | 17296f99d26ef3eb5a2e73428e3d67e418846ab7 (patch) | |
| tree | c117adeace6196d11c257385bc5f92de230a9b14 /lib/lib_install.php | |
| parent | 777fb7125fa8eb2915f4382b2c2faa0caeee3b57 (diff) | |
Fix CLI install bug with SQLite
And improve requirements check
https://github.com/FreshRSS/FreshRSS/issues/1443
Diffstat (limited to 'lib/lib_install.php')
| -rw-r--r-- | lib/lib_install.php | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/lib/lib_install.php b/lib/lib_install.php index c5cae4293..76871c98a 100644 --- a/lib/lib_install.php +++ b/lib/lib_install.php @@ -5,14 +5,36 @@ define('BCRYPT_COST', 9); Minz_Configuration::register('default_system', join_path(DATA_PATH, 'config.default.php')); Minz_Configuration::register('default_user', join_path(USERS_PATH, '_', 'config.default.php')); -function checkRequirements() { +function checkRequirements($dbType = '') { $php = version_compare(PHP_VERSION, '5.3.3') >= 0; $minz = file_exists(join_path(LIB_PATH, 'Minz')); $curl = extension_loaded('curl'); $pdo_mysql = extension_loaded('pdo_mysql'); $pdo_sqlite = extension_loaded('pdo_sqlite'); $pdo_pgsql = extension_loaded('pdo_pgsql'); - $pdo = $pdo_mysql || $pdo_sqlite || $pdo_pgsql; + $message = ''; + switch ($dbType) { + case 'mysql': + $pdo_sqlite = $pdo_pgsql = true; + $pdo = $pdo_mysql; + break; + case 'sqlite': + $pdo_mysql = $pdo_pgsql = true; + $pdo = $pdo_sqlite; + break; + case 'pgsql': + $pdo_mysql = $pdo_sqlite = true; + $pdo = $pdo_pgsql; + break; + case '': + $pdo = $pdo_mysql || $pdo_sqlite || $pdo_pgsql; + break; + default: + $pdo_mysql = $pdo_sqlite = $pdo_pgsql = true; + $pdo = false; + $message = 'Invalid database type!'; + break; + } $pcre = extension_loaded('pcre'); $ctype = extension_loaded('ctype'); $fileinfo = extension_loaded('fileinfo'); @@ -44,8 +66,9 @@ function checkRequirements() { 'users' => $users ? 'ok' : 'ko', 'favicons' => $favicons ? 'ok' : 'ko', 'http_referer' => $http_referer ? 'ok' : 'ko', + 'message' => $message ?: 'ok', 'all' => $php && $minz && $curl && $pdo && $pcre && $ctype && $fileinfo && $dom && $xml && - $data && $cache && $users && $favicons && $http_referer ? + $data && $cache && $users && $favicons && $http_referer && $message == '' ? 'ok' : 'ko' ); } @@ -77,7 +100,11 @@ function checkDb(&$dbOptions) { break; case 'sqlite': include_once(APP_PATH . '/SQL/install.sql.sqlite.php'); - $dsn = 'sqlite:' . join_path(USERS_PATH, $dbOptions['default_user'], 'db.sqlite'); + $path = join_path(USERS_PATH, $dbOptions['default_user']); + if (!is_dir($path)) { + mkdir($path); + } + $dsn = 'sqlite:' . join_path($path, 'db.sqlite'); $driver_options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ); |
