Файл: upload-2031-rs1/install/cli_install.php
Строк: 392
<?php
//
// Command line tool for installing opencart
// Author: Vineet Naik <vineet.naik@kodeplay.com> <naikvin@gmail.com>
//
// (Currently tested on linux only)
//
// Usage:
//
// cd install
// php cli_install.php install --db_hostname localhost
// --db_username root
// --db_password pass
// --db_database opencart
// --db_driver mysqli
// --username admin
// --password admin
// --email youremail@example.com
// --http_server http://localhost/opencart
//
ini_set('display_errors', 1);
error_reporting(E_ALL);
// DIR
define('DIR_APPLICATION', str_replace('\', '/', realpath(dirname(__FILE__))) . '/');
define('DIR_SYSTEM', str_replace('\', '/', realpath(dirname(__FILE__) . '/../')) . '/system/');
define('DIR_OPENCART', str_replace('\', '/', realpath(DIR_APPLICATION . '../')) . '/');
define('DIR_DATABASE', DIR_SYSTEM . 'database/');
define('DIR_LANGUAGE', DIR_APPLICATION . 'language/');
define('DIR_TEMPLATE', DIR_APPLICATION . 'view/template/');
define('DIR_CONFIG', DIR_SYSTEM . 'config/');
define('DIR_MODIFICATION', DIR_SYSTEM . 'modification/');
// Startup
require_once(DIR_SYSTEM . 'startup.php');
// Registry
$registry = new Registry();
// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);
function handleError($errno, $errstr, $errfile, $errline, array $errcontext) {
// error was suppressed with the @-operator
if (0 === error_reporting()) {
return false;
}
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler('handleError');
function usage() {
echo "Usage:n";
echo "======n";
echo "n";
$options = implode(" ", array(
'--db_hostname', 'localhost',
'--db_username', 'root',
'--db_password', 'pass',
'--db_database', 'opencart',
'--db_driver', 'mysqli',
'--username', 'admin',
'--password', 'admin',
'--email', 'youremail@example.com',
'--http_server', 'http://localhost/opencart'
));
echo 'php cli_install.php install ' . $options . "nn";
}
function get_options($argv) {
$defaults = array(
'db_hostname' => 'localhost',
'db_database' => 'opencart',
'db_prefix' => 'oc_',
'db_driver' => 'mysqli',
'username' => 'admin',
);
$options = array();
$total = count($argv);
for ($i=0; $i < $total; $i=$i+2) {
$is_flag = preg_match('/^--(.*)$/', $argv[$i], $match);
if (!$is_flag) {
throw new Exception($argv[$i] . ' found in command line args instead of a valid option name starting with '--'');
}
$options[$match[1]] = $argv[$i+1];
}
return array_merge($defaults, $options);
}
function valid($options) {
$required = array(
'db_hostname',
'db_username',
'db_password',
'db_database',
'db_prefix',
'username',
'password',
'email',
'http_server',
);
$missing = array();
foreach ($required as $r) {
if (!array_key_exists($r, $options)) {
$missing[] = $r;
}
}
if (!preg_match('#/$#', $options['http_server'])) {
$options['http_server'] = $options['http_server'] . '/';
}
$valid = count($missing) === 0;
return array($valid, $missing);
}
function install($options) {
$check = check_requirements();
if ($check[0]) {
setup_db($options);
write_config_files($options);
dir_permissions();
} else {
echo 'FAILED! Pre-installation check failed: ' . $check[1] . "nn";
exit(1);
}
}
function check_requirements() {
$error = null;
if (phpversion() < '5.0') {
$error = 'Warning: You need to use PHP5 or above for OpenCart to work!';
}
if (!ini_get('file_uploads')) {
$error = 'Warning: file_uploads needs to be enabled!';
}
if (ini_get('session.auto_start')) {
$error = 'Warning: OpenCart will not work with session.auto_start enabled!';
}
if (!extension_loaded('mysqli')) {
$error = 'Warning: MySQLi extension needs to be loaded for OpenCart to work!';
}
if (!extension_loaded('gd')) {
$error = 'Warning: GD extension needs to be loaded for OpenCart to work!';
}
if (!extension_loaded('curl')) {
$error = 'Warning: CURL extension needs to be loaded for OpenCart to work!';
}
if (!function_exists('mcrypt_encrypt')) {
$error = 'Warning: mCrypt extension needs to be loaded for OpenCart to work!';
}
if (!extension_loaded('zlib')) {
$error = 'Warning: ZLIB extension needs to be loaded for OpenCart to work!';
}
return array($error === null, $error);
}
function setup_db($dbdata) {
global $loader, $registry;
$loader->model('install');
$model = $registry->get('model_install');
$model->database($dbdata);
}
function write_config_files($options) {
$output = '<?php' . "n";
$output .= '// HTTP' . "n";
$output .= 'define('HTTP_SERVER', '' . $options['http_server'] . '');' . "n";
$output .= 'define('HTTP_IMAGE', '' . $options['http_server'] . 'image/');' . "n";
$output .= 'define('HTTP_ADMIN', '' . $options['http_server'] . 'admin/');' . "nn";
$output .= '// HTTPS' . "n";
$output .= 'define('HTTPS_SERVER', '' . $options['http_server'] . '');' . "n";
$output .= 'define('HTTPS_IMAGE', '' . $options['http_server'] . 'image/');' . "nn";
$output .= '// DIR' . "n";
$output .= 'define('DIR_APPLICATION', '' . DIR_OPENCART . 'catalog/');' . "n";
$output .= 'define('DIR_SYSTEM', '' . DIR_OPENCART . 'system/');' . "n";
$output .= 'define('DIR_DATABASE', '' . DIR_OPENCART . 'system/database/');' . "n";
$output .= 'define('DIR_LANGUAGE', '' . DIR_OPENCART . 'catalog/language/');' . "n";
$output .= 'define('DIR_TEMPLATE', '' . DIR_OPENCART . 'catalog/view/theme/');' . "n";
$output .= 'define('DIR_CONFIG', '' . DIR_OPENCART . 'system/config/');' . "n";
$output .= 'define('DIR_IMAGE', '' . DIR_OPENCART . 'image/');' . "n";
$output .= 'define('DIR_CACHE', '' . DIR_OPENCART . 'system/cache/');' . "n";
$output .= 'define('DIR_DOWNLOAD', '' . DIR_OPENCART . 'system/download/');' . "n";
$output .= 'define('DIR_UPLOAD', '' . DIR_OPENCART . 'system/upload/');' . "n";
$output .= 'define('DIR_MODIFICATION', '' . DIR_OPENCART . 'system/modification/');' . "n";
$output .= 'define('DIR_LOGS', '' . DIR_OPENCART . 'system/logs/');' . "nn";
$output .= '// DB' . "n";
$output .= 'define('DB_DRIVER', '' . addslashes($options['db_driver']) . '');' . "n";
$output .= 'define('DB_HOSTNAME', '' . addslashes($options['db_hostname']) . '');' . "n";
$output .= 'define('DB_USERNAME', '' . addslashes($options['db_username']) . '');' . "n";
$output .= 'define('DB_PASSWORD', '' . addslashes($options['db_password']) . '');' . "n";
$output .= 'define('DB_DATABASE', '' . addslashes($options['db_database']) . '');' . "n";
$output .= 'define('DB_PREFIX', '' . addslashes($options['db_prefix']) . '');' . "n";
$output .= '?>';
$file = fopen(DIR_OPENCART . 'config.php', 'w');
fwrite($file, $output);
fclose($file);
$output = '<?php' . "n";
$output .= '// HTTP' . "n";
$output .= 'define('HTTP_SERVER', '' . $options['http_server'] . 'admin/');' . "n";
$output .= 'define('HTTP_CATALOG', '' . $options['http_server'] . '');' . "n";
$output .= 'define('HTTP_IMAGE', '' . $options['http_server'] . 'image/');' . "nn";
$output .= '// HTTPS' . "n";
$output .= 'define('HTTPS_SERVER', '' . $options['http_server'] . 'admin/');' . "n";
$output .= 'define('HTTPS_CATALOG', '' . $options['http_server'] . '');' . "n";
$output .= 'define('HTTPS_IMAGE', '' . $options['http_server'] . 'image/');' . "nn";
$output .= '// DIR' . "n";
$output .= 'define('DIR_APPLICATION', '' . DIR_OPENCART . 'admin/');' . "n";
$output .= 'define('DIR_SYSTEM', '' . DIR_OPENCART . 'system/');' . "n";
$output .= 'define('DIR_DATABASE', '' . DIR_OPENCART . 'system/database/');' . "n";
$output .= 'define('DIR_LANGUAGE', '' . DIR_OPENCART . 'admin/language/');' . "n";
$output .= 'define('DIR_TEMPLATE', '' . DIR_OPENCART . 'admin/view/template/');' . "n";
$output .= 'define('DIR_CONFIG', '' . DIR_OPENCART . 'system/config/');' . "n";
$output .= 'define('DIR_IMAGE', '' . DIR_OPENCART . 'image/');' . "n";
$output .= 'define('DIR_CACHE', '' . DIR_OPENCART . 'system/cache/');' . "n";
$output .= 'define('DIR_DOWNLOAD', '' . DIR_OPENCART . 'system/download/');' . "n";
$output .= 'define('DIR_UPLOAD', '' . DIR_OPENCART . 'system/upload/');' . "n";
$output .= 'define('DIR_LOGS', '' . DIR_OPENCART . 'system/logs/');' . "n";
$output .= 'define('DIR_MODIFICATION', '' . DIR_OPENCART . 'system/modification/');' . "n";
$output .= 'define('DIR_CATALOG', '' . DIR_OPENCART . 'catalog/');' . "nn";
$output .= '// DB' . "n";
$output .= 'define('DB_DRIVER', '' . addslashes($options['db_driver']) . '');' . "n";
$output .= 'define('DB_HOSTNAME', '' . addslashes($options['db_hostname']) . '');' . "n";
$output .= 'define('DB_USERNAME', '' . addslashes($options['db_username']) . '');' . "n";
$output .= 'define('DB_PASSWORD', '' . addslashes($options['db_password']) . '');' . "n";
$output .= 'define('DB_DATABASE', '' . addslashes($options['db_database']) . '');' . "n";
$output .= 'define('DB_PREFIX', '' . addslashes($options['db_prefix']) . '');' . "n";
$output .= '?>';
$file = fopen(DIR_OPENCART . 'admin/config.php', 'w');
fwrite($file, $output);
fclose($file);
}
function dir_permissions() {
$dirs = array(
DIR_OPENCART . 'image/',
DIR_OPENCART . 'system/download/',
DIR_SYSTEM . 'cache/',
DIR_SYSTEM . 'logs/',
);
exec('chmod o+w -R ' . implode(' ', $dirs));
}
$argv = $_SERVER['argv'];
$script = array_shift($argv);
$subcommand = array_shift($argv);
switch ($subcommand) {
case "install":
try {
$options = get_options($argv);
define('HTTP_OPENCART', $options['http_server']);
$valid = valid($options);
if (!$valid[0]) {
echo "FAILED! Following inputs were missing or invalid: ";
echo implode(', ', $valid[1]) . "nn";
exit(1);
}
install($options);
echo "SUCCESS! Opencart successfully installed on your servern";
echo "Store link: " . $options['http_server'] . "n";
echo "Admin link: " . $options['http_server'] . "admin/nn";
} catch (ErrorException $e) {
echo 'FAILED!: ' . $e->getMessage() . "n";
exit(1);
}
break;
case "usage":
default:
echo usage();
}