Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
纵之格
ShopXO
提交
ad467460
ShopXO
项目概览
纵之格
/
ShopXO
通知
394
Star
16
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ad467460
编写于
1月 14, 2019
作者:
D
devil_gong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
安装程序优化,支持mysql5.0版本
上级
7d42d679
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
151 addition
and
16 deletion
+151
-16
application/common/Http.php
application/common/Http.php
+76
-0
application/install/controller/Index.php
application/install/controller/Index.php
+49
-12
application/install/view/index/create.html
application/install/view/index/create.html
+19
-2
application/install/view/public/footer.html
application/install/view/public/footer.html
+6
-1
config/app.php
config/app.php
+1
-1
未找到文件。
application/common/Http.php
0 → 100644
浏览文件 @
ad467460
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace
app\common
;
use
Exception
;
use
think\exception\Handle
;
use
think\exception\HttpException
;
use
think\exception\ValidateException
;
/**
* 异常处理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class
Http
extends
Handle
{
/**
* 异常处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-01-14
* @desc description
* @param Exception $e [错误对象]
*/
public
function
render
(
Exception
$e
)
{
// ajax请求处理
if
(
IS_AJAX
)
{
// 参数验证错误
if
(
$e
instanceof
ValidateException
)
{
$msg
=
$e
->
getError
();
$code
=
-
422
;
}
// 请求异常
if
(
$e
instanceof
HttpException
&&
request
()
->
isAjax
())
{
$msg
=
$e
->
getMessage
();
$code
=
$e
->
getStatusCode
();
}
if
(
!
isset
(
$code
))
{
$code
=
-
500
;
}
if
(
empty
(
$msg
))
{
if
(
method_exists
(
$e
,
'getMessage'
))
{
$msg
=
$e
->
getMessage
();
}
else
{
$msg
=
'服务器错误'
;
}
}
exit
(
json_encode
(
DataReturn
(
$msg
,
$code
)));
// web错误交给系统处理
}
else
{
return
parent
::
render
(
$e
);
}
}
}
?>
\ No newline at end of file
application/install/controller/Index.php
浏览文件 @
ad467460
...
...
@@ -22,6 +22,9 @@ use think\Db;
*/
class
Index
extends
Common
{
// 编码类型
private
$charset_type_list
;
/**
* 构造方法
* @author Devil
...
...
@@ -33,6 +36,20 @@ class Index extends Common
public
function
__construct
()
{
parent
::
__construct
();
// 编码类型
$this
->
charset_type_list
=
[
'utf8mb4'
=>
[
'charset'
=>
'utf8mb4'
,
'collate'
=>
'utf8mb4_general_ci'
,
'version'
=>
5.6
,
],
'utf8'
=>
[
'charset'
=>
'utf8'
,
'collate'
=>
'utf8_general_ci'
,
'version'
=>
5.0
,
],
];
}
/**
...
...
@@ -94,6 +111,8 @@ class Index extends Common
{
$this
->
IsInstall
();
new
\
base\Behavior
([
'msg'
=>
'数据信息填写'
]);
$this
->
assign
(
'charset_type_list'
,
$this
->
charset_type_list
);
return
$this
->
fetch
();
}
...
...
@@ -160,7 +179,7 @@ class Index extends Common
}
// mysql版本
$ret
=
$this
->
IsVersion
(
$db
);
$ret
=
$this
->
IsVersion
(
$db
,
$params
[
'DB_CHARSET'
]
);
if
(
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
...
...
@@ -169,7 +188,7 @@ class Index extends Common
// 检查数据表是否存在
if
(
!
$this
->
IsDbExist
(
$db
,
$params
[
'DB_NAME'
]))
{
if
(
$this
->
DbNameCreate
(
$db
,
$params
[
'DB_NAME'
]))
if
(
$this
->
DbNameCreate
(
$db
,
$params
[
'DB_NAME'
]
,
$params
[
'DB_CHARSET'
]
))
{
$db
=
$this
->
DbObj
(
$params
,
$params
[
'DB_NAME'
]);
}
else
{
...
...
@@ -241,7 +260,7 @@ return [
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => '
utf8mb4
',
'charset' => '
{$this->charset_type_list[$params['DB_CHARSET']]['charset']}
',
// 数据库表前缀
'prefix' => '{$params['DB_PREFIX']}',
// 数据库调试模式
...
...
@@ -310,6 +329,14 @@ php;
//替换表前缀
$sql
=
str_replace
(
"`s_"
,
" `
{
$params
[
'DB_PREFIX'
]
}
"
,
$sql
);
// 编码替换,utf8mb4则做替换操作
$charset
=
$this
->
charset_type_list
[
$params
[
'DB_CHARSET'
]];
if
(
$charset
[
'charset'
]
!=
'utf8mb4'
)
{
$sql
=
str_replace
(
'CHARSET=utf8mb4'
,
"CHARSET=
{
$charset
[
'charset'
]
}
"
,
$sql
);
$sql
=
str_replace
(
'utf8mb4_general_ci'
,
"
{
$charset
[
'collate'
]
}
"
,
$sql
);
}
// 转为数组
$sql_all
=
preg_split
(
"/;[
\r\n
]+/"
,
$sql
);
...
...
@@ -348,9 +375,10 @@ php;
* @version 1.0.0
* @date 2018-12-28
* @desc description
* @param [object] $db [db对象]
* @param [object] $db [db对象]
* @param [string] $db_charset [数据库编码]
*/
private
function
IsVersion
(
$db
)
private
function
IsVersion
(
$db
,
$db_charset
)
{
$data
=
$db
->
query
(
"select version() AS version"
);
if
(
empty
(
$data
[
0
][
'version'
]))
...
...
@@ -358,10 +386,12 @@ php;
new
\
base\Behavior
([
'msg'
=>
'查询数据库版本失败'
]);
return
DataReturn
(
'查询数据库版本失败'
,
-
1
);
}
else
{
if
(
$data
[
0
][
'version'
]
<
5.6
)
$mysql_version
=
str_replace
(
'-log'
,
''
,
$data
[
0
][
'version'
]);
if
(
$mysql_version
<
$this
->
charset_type_list
[
$db_charset
][
'version'
])
{
new
\
base\Behavior
([
'msg'
=>
'数据库版本过低'
,
'mysql_version'
=>
$data
[
0
][
'version'
]]);
return
DataReturn
(
'数据库版本过低'
,
-
1
);
$msg
=
'数据库版本过低、需要>='
.
$this
->
charset_type_list
[
$db_charset
][
'version'
]
.
'、当前'
.
$mysql_version
;
new
\
base\Behavior
([
'msg'
=>
$msg
,
'mysql_version'
=>
$mysql_version
]);
return
DataReturn
(
$msg
,
-
1
);
}
}
return
DataReturn
(
'success'
,
0
);
...
...
@@ -374,12 +404,13 @@ php;
* @version 1.0.0
* @date 2018-12-28
* @desc description
* @param [object] $db [db对象]
* @param [string] $db_name [数据库名称]
* @param [object] $db [db对象]
* @param [string] $db_name [数据库名称]
* @param [string] $db_charset [数据库编码]
*/
private
function
DbNameCreate
(
$db
,
$db_name
)
private
function
DbNameCreate
(
$db
,
$db_name
,
$db_charset
)
{
$sql
=
"CREATE DATABASE
{
$db_name
}
DEFAULT CHARSET
utf8mb4 COLLATE utf8mb4_general_ci
"
;
$sql
=
"CREATE DATABASE
{
$db_name
}
DEFAULT CHARSET
{
$this
->
charset_type_list
[
$db_charset
][
'charset'
]
}
COLLATE
{
$this
->
charset_type_list
[
$db_charset
][
'collate'
]
}
"
;
if
(
$db
->
execute
(
$sql
)
!==
false
)
{
return
$this
->
IsDbExist
(
$db
,
$db_name
);
...
...
@@ -460,6 +491,12 @@ php;
'key_name'
=>
'DB_TYPE'
,
'error_msg'
=>
'请选择数据库类型'
,
],
[
'checked_type'
=>
'in'
,
'key_name'
=>
'DB_CHARSET'
,
'checked_data'
=>
array_column
(
$this
->
charset_type_list
,
'charset'
),
'error_msg'
=>
'请选择数据编码'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'DB_HOST'
,
...
...
application/install/view/index/create.html
浏览文件 @
ad467460
...
...
@@ -8,8 +8,12 @@
<h2>
数据库信息
</h2>
<div
class=
"am-alert am-alert-warning am-radius"
data-am-alert
>
<button
type=
"button"
class=
"am-close"
>
×
</button>
<p
class=
"fs-12"
>
MySQL需 5.6 及以上版本
</p>
<p
class=
"fs-12"
>
编码格式为 utf8mb4 / utf8mb4_general_ci
</p>
<p
class=
"fs-12"
>
温馨提示、建议采用utf8mb4
</p>
{{if !empty($charset_type_list)}}
{{foreach $charset_type_list as $v}}
<p
class=
"fs-12"
>
{{$v.charset}}编码、MySQL版本需 {{$v.version}} 及以上版本 ({{$v.collate}})
</p>
{{/foreach}}
{{/if}}
</div>
<form
class=
"am-form am-form-horizontal form-validation"
method=
"post"
action=
"{{:MyUrl('install/index/add')}}"
request-type=
"ajax-url"
request-value=
"{{:MyUrl('install/index/successful')}}"
timeout=
"60000"
>
<div
class=
"am-form-group"
>
...
...
@@ -19,6 +23,19 @@
</div>
</div>
<div
class=
"am-form-group am-form-select"
>
<label
class=
"am-u-sm-2 am-form-label"
>
数据库编码
</label>
<div
class=
"am-u-sm-10"
>
<select
class=
"am-input-sm am-radius chosen-select"
name=
"DB_CHARSET"
data-validation-message=
"请选择数据编码"
required
>
{{if !empty($charset_type_list)}}
{{foreach $charset_type_list as $v}}
<option
value=
"{{$v.charset}}"
>
{{$v.charset}} - {{$v.collate}} (mysql版本>={{$v.version}})
</option>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
<div
class=
"am-form-group"
>
<label
class=
"am-u-sm-2 am-form-label"
>
数据库服务器
</label>
<div
class=
"am-u-sm-10"
>
...
...
application/install/view/public/footer.html
浏览文件 @
ad467460
...
...
@@ -9,4 +9,9 @@
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/jquery/jquery-2.1.0.js"
></script>
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/assets/js/amazeui.min.js"
></script>
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/js/common.js"
></script>
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/install/js/index.js"
></script>
\ No newline at end of file
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/install/js/index.js"
></script>
<!-- amazeui插件 -->
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-switch/amazeui.switch.min.js"
></script>
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-chosen/amazeui.chosen.min.js"
></script>
<script
type=
'text/javascript'
src=
"{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.min.js"
></script>
\ No newline at end of file
config/app.php
浏览文件 @
ad467460
...
...
@@ -141,6 +141,6 @@ return [
// 显示错误信息
'show_error_msg'
=>
false
,
// 异常处理handle类 留空使用 \think\exception\Handle
'exception_handle'
=>
''
,
'exception_handle'
=>
'
\\app\\common\\Http
'
,
];
?>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录