Kaynağa Gözat

Check requirement in CLI script (#1711)

* check requirements in actualize_script before executing, fixes #1710

* removed empty whiteline

* testing all requirements

* incorporated code review feedback

* removed code that is already executed in _cli.php

* added newline at eof

* fixed include problems

* fixed include problems
Kevin Papst 8 yıl önce
ebeveyn
işleme
5c52d9b34b
3 değiştirilmiş dosya ile 22 ekleme ve 22 silme
  1. 4 8
      app/actualize_script.php
  2. 17 0
      cli/_cli.php
  3. 1 14
      cli/do-install.php

+ 4 - 8
app/actualize_script.php

@@ -1,6 +1,5 @@
 <?php
-require(dirname(__FILE__) . '/../constants.php');
-require(LIB_PATH . '/lib_rss.php');	//Includes class autoloader
+require(__DIR__ . '/../cli/_cli.php');
 
 session_cache_limiter('');
 ob_implicit_flush(false);
@@ -12,7 +11,6 @@ if (defined('STDOUT')) {
 	fwrite(STDOUT, 'Starting feed actualization at ' . $begin_date->format('c') . "\n");	//Unbuffered
 }
 
-
 // Set the header params ($_GET) to call the FRSS application.
 $_GET['c'] = 'feed';
 $_GET['a'] = 'actualize';
@@ -20,15 +18,15 @@ $_GET['ajax'] = 1;
 $_GET['force'] = true;
 $_SERVER['HTTP_HOST'] = '';
 
-
 $log_file = join_path(USERS_PATH, '_', 'log.txt');
 
-
 $app = new FreshRSS();
 
 $system_conf = Minz_Configuration::get('system');
 $system_conf->auth_type = 'none';  // avoid necessity to be logged in (not saved!)
-FreshRSS_Context::$isCli = true;
+
+// make sure the PHP setup of the CLI environment is compatible with FreshRSS as well
+performRequirementCheck($system_conf->db['type']);
 
 // Create the list of users to actualize.
 // Users are processed in a random order but always start with admin
@@ -39,7 +37,6 @@ if ($system_conf->default_user !== '') {
 	$users = array_unique($users);
 }
 
-
 $limits = $system_conf->limits;
 $min_last_activity = time() - $limits['max_inactivity'];
 foreach ($users as $user) {
@@ -74,7 +71,6 @@ foreach ($users as $user) {
 	}
 }
 
-
 Minz_Log::notice('FreshRSS actualize done.', $log_file);
 if (defined('STDOUT')) {
 	fwrite(STDOUT, 'Done.' . "\n");

+ 17 - 0
cli/_cli.php

@@ -5,6 +5,7 @@ if (php_sapi_name() !== 'cli') {
 
 require(dirname(__FILE__) . '/../constants.php');
 require(LIB_PATH . '/lib_rss.php');
+require(LIB_PATH . '/lib_install.php');
 
 Minz_Configuration::register('system',
 	DATA_PATH . '/config.php',
@@ -47,3 +48,19 @@ function done($ok = true) {
 	fwrite(STDERR, 'Result: ' . ($ok ? 'success' : 'fail') . "\n");
 	exit($ok ? 0 : 1);
 }
+
+function performRequirementCheck($databaseType) {
+	$requirements = checkRequirements($databaseType);
+	if ($requirements['all'] !== 'ok') {
+		$message = 'FreshRSS install failed requirements:' . "\n";
+		foreach ($requirements as $requirement => $check) {
+			if ($check !== 'ok' && !in_array($requirement, array('all', 'pdo', 'message'))) {
+				$message .= '• ' . $requirement . "\n";
+			}
+		}
+		if (!empty($requirements['message'])) {
+			$message .= '• ' . $requirements['message'] . "\n";
+		}
+		fail($message);
+	}
+}

+ 1 - 14
cli/do-install.php

@@ -1,7 +1,6 @@
 #!/usr/bin/php
 <?php
 require('_cli.php');
-require(LIB_PATH . '/lib_install.php');
 
 if (!file_exists(DATA_PATH . '/do-install.txt')) {
 	fail('FreshRSS looks to be already installed! Please use `./cli/reconfigure.php` instead.');
@@ -66,19 +65,7 @@ foreach ($dBparams as $dBparam) {
 	}
 }
 
-$requirements = checkRequirements($config['db']['type']);
-if ($requirements['all'] !== 'ok') {
-	$message = 'FreshRSS install failed requirements:' . "\n";
-	foreach ($requirements as $requirement => $check) {
-		if ($check !== 'ok' && !in_array($requirement, array('all', 'pdo', 'message'))) {
-			$message .= '• ' . $requirement . "\n";
-		}
-	}
-	if (!empty($requirements['message'])) {
-		$message .= '• ' . $requirements['message'] . "\n";
-	}
-	fail($message);
-}
+performRequirementCheck($config['db']['type']);
 
 if (!FreshRSS_user_Controller::checkUsername($options['default_user'])) {
 	fail('FreshRSS error: invalid default username “' . $options['default_user']