2013-08-02 17:36:54 +04:00
< ? php
/**
2015-03-26 13:44:34 +03:00
* @ author Bart Visscher < bartv @ thisnet . nl >
* @ author Christian Kampka < christian @ kampka . net >
2016-01-12 17:02:16 +03:00
* @ author Edward Crompton < edward . crompton @ gmail . com >
2016-03-01 19:25:15 +03:00
* @ author Joas Schilling < nickvergessen @ owncloud . com >
2015-06-25 12:43:55 +03:00
* @ author Jost Baron < Jost . Baron @ gmx . de >
* @ author Lukas Reschke < lukas @ owncloud . com >
2015-03-26 13:44:34 +03:00
* @ author Morris Jobke < hey @ morrisjobke . de >
2015-10-05 21:54:56 +03:00
* @ author Philippe Le Brouster < plb @ nebkha . net >
2015-03-26 13:44:34 +03:00
* @ author Thomas Müller < thomas . mueller @ tmit . eu >
2016-03-01 19:25:15 +03:00
* @ author Victor Dubiniuk < dubiniuk @ owncloud . com >
2015-03-26 13:44:34 +03:00
*
2016-01-12 17:02:16 +03:00
* @ copyright Copyright ( c ) 2016 , ownCloud , Inc .
2015-03-26 13:44:34 +03:00
* @ license AGPL - 3.0
*
* This code is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License , version 3 ,
* as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License , version 3 ,
* along with this program . If not , see < http :// www . gnu . org / licenses />
*
2013-08-02 17:36:54 +04:00
*/
2015-02-26 13:37:37 +03:00
2015-04-08 11:53:03 +03:00
use OC\Console\Application ;
2016-02-18 02:42:00 +03:00
use Symfony\Component\Console\Input\ArgvInput ;
2015-04-08 11:53:03 +03:00
use Symfony\Component\Console\Output\ConsoleOutput ;
2013-09-01 18:40:50 +04:00
2015-02-21 22:52:32 +03:00
define ( 'OC_CONSOLE' , 1 );
2015-05-08 17:01:38 +03:00
// Show warning if a PHP version below 5.4.0 is used, this has to happen here
// because base.php will already use 5.4 syntax.
if ( version_compare ( PHP_VERSION , '5.4.0' ) === - 1 ) {
echo 'This version of ownCloud requires at least PHP 5.4.0' . PHP_EOL ;
echo 'You are currently running ' . PHP_VERSION . '. Please update your PHP version.' . PHP_EOL ;
return ;
}
2016-04-18 23:30:01 +03:00
function exceptionHandler ( $exception ) {
echo " An unhandled exception has been thrown: " . PHP_EOL ;
echo $exception ;
exit ( 1 );
}
2014-05-19 17:26:57 +04:00
try {
require_once 'lib/base.php' ;
2013-08-02 17:36:54 +04:00
2015-02-16 11:16:32 +03:00
// set to run indefinitely if needed
set_time_limit ( 0 );
2014-05-19 17:26:57 +04:00
if ( ! OC :: $CLI ) {
echo " This script can be run from the command line only " . PHP_EOL ;
exit ( 0 );
}
2013-08-02 23:23:50 +04:00
2016-04-18 23:30:01 +03:00
set_exception_handler ( 'exceptionHandler' );
2015-01-12 18:49:36 +03:00
if ( ! OC_Util :: runningOnWindows ()) {
2015-01-12 22:17:02 +03:00
if ( ! function_exists ( 'posix_getuid' )) {
echo " The posix extensions are required - see http://php.net/manual/en/book.posix.php " . PHP_EOL ;
exit ( 0 );
}
2015-01-12 18:49:36 +03:00
$user = posix_getpwuid ( posix_getuid ());
2015-06-13 22:05:57 +03:00
$configUser = posix_getpwuid ( fileowner ( OC :: $configDir . 'config.php' ));
2015-01-12 18:49:36 +03:00
if ( $user [ 'name' ] !== $configUser [ 'name' ]) {
2015-04-28 23:51:19 +03:00
echo " Console has to be executed with the user that owns the file config/config.php " . PHP_EOL ;
2015-01-12 18:49:36 +03:00
echo " Current user: " . $user [ 'name' ] . PHP_EOL ;
2015-04-28 23:51:19 +03:00
echo " Owner of config.php: " . $configUser [ 'name' ] . PHP_EOL ;
2016-01-04 18:02:24 +03:00
echo " Try adding 'sudo -u " . $configUser [ 'name' ] . " ' to the beginning of the command (without the single quotes) " . PHP_EOL ;
2016-01-04 18:10:25 +03:00
exit ( 0 );
2015-01-12 18:49:36 +03:00
}
}
2015-12-17 12:48:29 +03:00
$oldWorkingDir = getcwd ();
if ( $oldWorkingDir === false ) {
echo " This script can be run from the ownCloud root directory only. " . PHP_EOL ;
echo " Can't determine current working dir - the script will continue to work but be aware of the above fact. " . PHP_EOL ;
} else if ( $oldWorkingDir !== __DIR__ && ! chdir ( __DIR__ )) {
echo " This script can be run from the ownCloud root directory only. " . PHP_EOL ;
2016-02-11 15:59:15 +03:00
echo " Can't change to ownCloud root directory. " . PHP_EOL ;
2015-12-17 12:48:29 +03:00
exit ( 1 );
}
2016-02-25 12:05:34 +03:00
if ( ! function_exists ( 'pcntl_signal' ) && ! in_array ( '--no-warnings' , $argv )) {
2016-01-29 18:03:35 +03:00
echo " The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php " . PHP_EOL ;
}
2016-02-05 14:24:54 +03:00
$application = new Application ( \OC :: $server -> getConfig (), \OC :: $server -> getEventDispatcher (), \OC :: $server -> getRequest ());
2016-02-18 02:42:00 +03:00
$application -> loadCommands ( new ArgvInput (), new ConsoleOutput ());
2014-05-19 17:26:57 +04:00
$application -> run ();
} catch ( Exception $ex ) {
2016-04-18 23:30:01 +03:00
exceptionHandler ( $ex );
2016-04-20 19:01:47 +03:00
} catch ( Error $ex ) {
exceptionHandler ( $ex );
2013-09-13 20:10:04 +04:00
}