<?php
if (file_exists('install.lock')) {
die('很抱歉,程序已经部署完成。如需重新部署,请删除install/install.lock文件。');
}else{
if(isset($_GET['act'])=='install'){
install();
}
}
function strEnhtml($str) {
return addslashes(htmlspecialchars(trim($str)));
}
function fetchFile($file) {
if (file_exists($file) and is_readable($file)) {
if (function_exists('file_get_contents')) {
$content = file_get_contents($file);
} else {
$fp = fopen($file, 'r');
while (!feof($fp)) {
$content = fgets($fp, 1024);
}
fclose($fp);
}
return $content;
}
}
function writeFile($path, $str, $type = 'w+') {
$of = fopen($path, $type);
if ($of) {
fwrite($of, iconv('utf-8', 'utf-8', $str));
fclose($of);
return true;
} else {
return false;
}
}
function returnJson($info){
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($info));
}
function install() {
$dbhost = isset($_POST['dbhost']) ? strEnhtml($_POST['dbhost']) :'';
$dbname = isset($_POST['dbname']) ? strEnhtml($_POST['dbname']) :'';
$dbuser = isset($_POST['dbuser']) ? strEnhtml($_POST['dbuser']) :'';
$dbpwd = isset($_POST['dbpwd']) ? strEnhtml($_POST['dbpwd']) :'';
(!$dbhost || !$dbname || !$dbuser) && returnJson(['state'=>'error','info'=>'配置信息填写不完全!']);
$conn = @mysqli_connect($dbhost,$dbuser,$dbpwd);
!$conn && returnJson(['state'=>'error','info'=>'连接数据库失败,请核实配置信息!']);
mysqli_query($conn,"SET NAMES 'utf8', character_set_client=binary, sql_mode='', interactive_timeout=3600;");
$list = mysqli_query($conn,'show Databases');
while ($row = mysqli_fetch_array($list)) {
$dbname_arr[] = $row['Database'];
}
if (!in_array($dbname,$dbname_arr)) {
!mysqli_query($conn,'CREATE DATABASE '.$dbname.'') && returnJson(['state'=>'error','info'=>'创建数据库失败!']);
}
mysqli_select_db($conn,$dbname);
$sql = fetchFile('mysql.sql');
$sqlarr = explode(";\n",$sql);
foreach ($sqlarr as $sql) {
mysqli_query($conn,$sql);
}
$database = fetchFile('database.ini');
$database = str_replace('{db_host}',$dbhost,$database);
$database = str_replace('{db_user}',$dbuser,$database);
$database = str_replace('{db_pwd}',$dbpwd,$database);
$database = str_replace('{db_name}',$dbname,$database);
if (!writeFile('../../config/database.php',$database)) {
returnJson(['state'=>'error','info'=>'数据库连接文件创建失败!']);
}
writeFile('../install.lock','软件已正确安装,重新安装请删除本文件。');
returnJson(['state'=>'success']);
}
?>