一:导入安装引导程序
/Public/install/
把install放到自己项目的目录下;
里面重要的是mysql.sql 这个是数据库文件;
并且初始状态下;是没有install.lock文件的;
二:检测是否安装
thinkphp5框架下的入口文件 index.php ,加入如下判断
// 1.判断当前 php 版本
if (version_compare(PHP_VERSION,'5.6','<')) die('require PHP > 5.6');
// 2.判断是否安装
if (file_exists('./install') && !file_exists('./install/install.lock')){
// 重定向到安装向导
$url = $_SERVER['HTTP_HOST'].trim($_SERVER['SCRIPT_NAME'],'index.php').'install/index.php';
header('Location:http://'.$url);
die;
}
三:流程
首先;当访问index.php的时候;
会先走上面那段代码;判断/Public/install/install.lock文件是否存在;
如果不存在;那么表示还没安装;
则会重定向到/Public/install/index.php走安装程序;
当按照要求输入数据库的账号密码安装成功后;
会创建一个/Public/install/install.lock文件;
再访问入口文件的时候;就会跳过重定向;
同时会把输入的数据库账号密码写入到 /Application/Common/Conf/db.php文件中;
/Public/install/index.php文件中写着安装过程,具体代码如下:
<?php
/**
* 安装向导
*/
header('Content-type:text/html;charset=utf-8');
// 检测是否安装过
if (file_exists('./install.lock')) {
echo '你已经安装过该系统,重新安装需要先删除./Public/install/install.lock 文件';
die;
}
// 同意协议页面
if(@!isset($_GET['c']) || @$_GET['c']=='agreement'){
require './agreement.html';
}
// 检测环境页面
if(@$_GET['c']=='test'){
require './test.html';
}
// 创建数据库页面
if(@$_GET['c']=='create'){
require './create.html';
}
// 安装成功页面,数据库页面表单提交过来的数据
if(@$_GET['c']=='success'){
// 判断是否为post
if($_SERVER['REQUEST_METHOD']=='POST'){
$data=$_POST;
// 连接数据库
$link=@new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}",$data['DB_USER'],$data['DB_PWD']);
// 获取错误信息
$error=$link->connect_error;
if (!is_null($error)) {
// 转义防止和alert中的引号冲突
$error=addslashes($error);
die("<script>alert('数据库链接失败:$error');history.go(-1)</script>");
}
// 设置字符集
$link->query("SET NAMES 'utf8'");
$link->server_info>5.0 or die("<script>alert('请将您的mysql升级到5.0以上');history.go(-1)</script>");
// 创建数据库并选中
if(!$link->select_db($data['DB_NAME'])){
$create_sql='CREATE DATABASE IF NOT EXISTS '.$data['DB_NAME'].' DEFAULT CHARACTER SET utf8;';
$link->query($create_sql) or die('创建数据库失败');
$link->select_db($data['DB_NAME']);
}
// 导入sql数据并创建表
$bjyblog_str=file_get_contents('./bjyblog.sql');
$sql_array=preg_split("/;[\r\n]+/", str_replace('bjy_',$data['DB_PREFIX'],$bjyblog_str));
foreach ($sql_array as $k => $v) {
if (!empty($v)) {
$link->query($v);
}
}
$link->close();
$db_str=<<<php
<?php
return array(
//*************************************数据库设置*************************************
'DB_TYPE' => 'mysqli', // 数据库类型
'DB_HOST' => '{$data['DB_HOST']}', // 服务器地址
'DB_NAME' => '{$data['DB_NAME']}', // 数据库名
'DB_USER' => '{$data['DB_USER']}', // 用户名
'DB_PWD' => '{$data['DB_PWD']}', // 密码
'DB_PORT' => '{$data['DB_PORT']}', // 端口
'DB_PREFIX' => '{$data['DB_PREFIX']}', // 数据库表前缀
);
php;
// 创建数据库链接配置文件
file_put_contents('../../config/database.php', $db_str);
@touch('./install.lock');
require './success.html';
}
}
网友评论