Files
littleTiger/install/index_sae.php
2019-02-28 19:48:21 +08:00

361 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (file_exists('./install.lock')) {
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
你已经安装过该系统如果想重新安装请先删除站点install目录下的 install.lock 文件,然后再安装。
</body>
</html>';
exit;
}
@set_time_limit(1000);
if (phpversion() <= '5.4.0')
set_magic_quotes_runtime(0);
if ('5.4.0' > phpversion())
exit('您的php版本过低不能安装本软件请升级到5.4.0或更高版本再安装,谢谢!');
date_default_timezone_set('PRC');
error_reporting(E_ALL & ~E_NOTICE);
header('Content-Type: text/html; charset=UTF-8');
define('SITEDIR', _dir_path(substr(dirname(__FILE__), 0, -8)));
define("TUZI_CMS_VERSION", '20150811');
//数据库
$configFile = 'config.php';
if (!file_exists(SITEDIR . 'install/tpshop.sql' ) || !file_exists(SITEDIR . 'install/' . $configFile)) {
echo '缺少必要的安装文件!';
exit;
}
$Title = "TPshop安装向导";
$Powered = "Powered by TPshop";
$steps = array(
'1' => '安装许可协议',
'2' => '运行环境检测',
'3' => '安装参数设置',
'4' => '安装详细过程',
'5' => '安装完成',
);
$step = isset($_GET['step']) ? $_GET['step'] : 1;
//地址
$scriptName = !empty($_SERVER["REQUEST_URI"]) ? $scriptName = $_SERVER["REQUEST_URI"] : $scriptName = $_SERVER["PHP_SELF"];
$rootpath = @preg_replace("/\/(I|i)nstall\/index_sae\.php(.*)$/", "", $scriptName);
$domain = empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
if ((int) $_SERVER['SERVER_PORT'] != 80) {
$domain .= ":" . $_SERVER['SERVER_PORT'];
}
$domain = $domain . $rootpath;
// mysql
$conn = @mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
// kvdb
$kv = new SaeKV(); $kv_ini = $kv->init();
// memcache
$mmc=@memcache_init();
// storage
$s = new SaeStorage();
switch ($step) {
case '1':
include_once ("./templates/s1.php");
exit();
case '2':
if (phpversion() < 5) {
die('本系统需要PHP5+MYSQL >=4.1环境当前PHP版本为' . phpversion());
}
$phpv = @ phpversion();
$err = 0;
if($conn){
$saeMysql = '<span class="correct_span">&radic;</span> 已开启';
}else {
$saeMysql = '<span class="correct_span error_span">&radic;</span> 未开启';
$err++;
}
if(is_array($s->getListByPath('data'))){
$storage = '<span class="correct_span">&radic;</span> 已开启';
} else {
$storage = '<span class="correct_span error_span">&radic;</span> 需开启并发创建名称为data的domain';
$err++;
}
if($kv_ini){
$KVDB = '<span class="correct_span">&radic;</span> 已开启';
} else {
$KVDB = '<span class="correct_span error_span">&radic;</span> 未开启';
$err++;
}
if($mmc){
$Memcache = '<span class="correct_span">&radic;</span> 已开启';
} else {
$Memcache = '<span class="correct_span error_span">&radic;</span> 未开启';
$err++;
}
include_once ("./templates/s2_sae.php");
exit();
case '3':
if ($_GET['testdbpwd']) {
$dbHost = $_POST['dbHost'] . ':' . $_POST['dbport'];
$conn = @mysql_connect($dbHost, $_POST['dbUser'], $_POST['dbPwd']);
if ($conn) {
die("1");
} else {
die("");
}
}
include_once ("./templates/s3_sae.php");
exit();
case '4':
if (intval($_GET['install'])) {
$n = intval($_GET['n']);
$arr = array();
$dbName = SAE_MYSQL_DB;
$dbPrefix = empty($_POST['dbprefix']) ? 'tp_' : trim($_POST['dbprefix']);
$username = trim($_POST['manager']);
$password = trim($_POST['manager_pwd']);
$email = trim($_POST['manager_email']);
if (!$conn) {
$arr['msg'] = "连接数据库失败!";
echo json_encode($arr);
exit;
}
mysql_query("SET NAMES 'utf8'"); //,character_set_client=binary,sql_mode='';
$version = mysql_get_server_info($conn);
if ($version < 4.1) {
$arr['msg'] = '数据库版本太低!';
echo json_encode($arr);
exit;
}
if (!mysql_select_db($dbName, $conn)) {
//创建数据时同时设置编码
if (!mysql_query("CREATE DATABASE IF NOT EXISTS `" . $dbName . "` DEFAULT CHARACTER SET utf8;", $conn)) {
$arr['msg'] = '数据库 ' . $dbName . ' 不存在,也没权限创建新的数据库!';
echo json_encode($arr);
exit;
}
if (empty($n)) {
$arr['n'] = 1;
$arr['msg'] = "成功创建数据库:{$dbName}<br>";
echo json_encode($arr);
exit;
}
mysql_select_db($dbName, $conn);
}
//读取数据文件
$sqldata = file_get_contents(SITEDIR . 'install/' . $sqlFile);
$sqlFormat = sql_split($sqldata, $dbPrefix);
/**
执行SQL语句
*/
$counts = count($sqlFormat);
for ($i = $n; $i < $counts; $i++) {
$sql = trim($sqlFormat[$i]);
if (strstr($sql, 'CREATE TABLE')) {
preg_match('/CREATE TABLE `([^ ]*)`/', $sql, $matches);
mysql_query("DROP TABLE IF EXISTS `$matches[1]");
$ret = mysql_query($sql);
if ($ret) {
$message = '<li><span class="correct_span">&radic;</span>创建数据表' . $matches[1] . ',完成</li> ';
} else {
$message = '<li><span class="correct_span error_span">&radic;</span>创建数据表' . $matches[1] . ',失败</li>';
}
$i++;
$arr = array('n' => $i, 'msg' => $message);
echo json_encode($arr);
exit;
} else {
$ret = mysql_query($sql);
$message = '';
$arr = array('n' => $i, 'msg' => $message);
//echo json_encode($arr); exit;
}
}
if ($i == 999999) exit;
/*
$site_name = trim($_POST['sitename']);
$site_url = trim($_POST['siteurl']);
$site_keywords = trim($_POST['sitekeywords']);
$site_desc = trim($_POST['siteinfo']);
$sql = "INSERT INTO `{$dbPrefix}config` (name,value,inc_type) VALUES ('site_name','$site_name','shop_info'),('site_url','$site_url','shop_info'),('site_keywords','$site_keywords','shop_info'),('site_desc','$site_desc','shop_info')";
mysql_query($sql);
*/
//插入管理员
//生成随机认证码
$verify = sp_random_string(6);
$time = time();
$create_date=date("Y-m-d h:i:s");
$ip = get_client_ip();
$ip =empty($ip)?"0.0.0.0":$ip;
$password = sp_password($password, $dbPrefix);
mysql_query("INSERT INTO `{$dbPrefix}admin` (admin_id,user_name,email,password,add_time,last_ip,role_id) VALUES ('1','$username','$email','$password','$time','$ip','0')");
$message = '成功添加管理员<br />成功写入配置文件<br>安装完成.';
$arr = array('n' => 999999, 'msg' => $message);
echo json_encode($arr);
exit;
}
include_once ("./templates/s4.php");
exit();
case '5':
$ip = get_client_ip();
$host=$_SERVER['HTTP_HOST'];
include_once ("./templates/s5.php");
exit();
}
function testwrite($d) {
$tfile = "_test.txt";
$fp = @fopen($d . "/" . $tfile, "w");
if (!$fp) {
return false;
}
fclose($fp);
$rs = @unlink($d . "/" . $tfile);
if ($rs) {
return true;
}
return false;
}
function sql_execute($sql, $tablepre) {
$sqls = sql_split($sql, $tablepre);
if (is_array($sqls)) {
foreach ($sqls as $sql) {
if (trim($sql) != '') {
mysql_query($sql);
}
}
} else {
mysql_query($sqls);
}
return true;
}
function sql_split($sql, $tablepre) {
if ($tablepre != "sp_")
$sql = str_replace("sp_", $tablepre, $sql);
$sql = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8", $sql);
if ($r_tablepre != $s_tablepre)
$sql = str_replace($s_tablepre, $r_tablepre, $sql);
$sql = str_replace("\r", "\n", $sql);
$ret = array();
$num = 0;
$queriesarray = explode(";\n", trim($sql));
unset($sql);
foreach ($queriesarray as $query) {
$ret[$num] = '';
$queries = explode("\n", trim($query));
$queries = array_filter($queries);
foreach ($queries as $query) {
$str1 = substr($query, 0, 1);
if ($str1 != '#' && $str1 != '-')
$ret[$num] .= $query;
}
$num++;
}
return $ret;
}
function _dir_path($path) {
$path = str_replace('\\', '/', $path);
if (substr($path, -1) != '/')
$path = $path . '/';
return $path;
}
// 获取客户端IP地址
function get_client_ip() {
static $ip = NULL;
if ($ip !== NULL)
return $ip;
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown', $arr);
if (false !== $pos)
unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$ip = (false !== ip2long($ip)) ? $ip : '0.0.0.0';
return $ip;
}
function dir_create($path, $mode = 0777) {
if (is_dir($path))
return TRUE;
$ftp_enable = 0;
$path = dir_path($path);
$temp = explode('/', $path);
$cur_dir = '';
$max = count($temp) - 1;
for ($i = 0; $i < $max; $i++) {
$cur_dir .= $temp[$i] . '/';
if (@is_dir($cur_dir))
continue;
@mkdir($cur_dir, 0777, true);
@chmod($cur_dir, 0777);
}
return is_dir($path);
}
function dir_path($path) {
$path = str_replace('\\', '/', $path);
if (substr($path, -1) != '/')
$path = $path . '/';
return $path;
}
function sp_password($pw, $pre){
$decor=md5($pre);
$mi=md5($pw);
return substr($decor,0,12).$mi.substr($decor,-4,4);
}
function sp_random_string($len = 6) {
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars); // 将数组打乱
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars[mt_rand(0, $charsLen)];
}
return $output;
}
?>