123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <?php
- // +----------------------------------------------------------------------
- // | 海豚PHP框架 [ DolphinPHP ]
- // +----------------------------------------------------------------------
- // | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
- // +----------------------------------------------------------------------
- // | 官方网站: http://dolphinphp.com
- // +----------------------------------------------------------------------
- use think\facade\Env;
- // 此函数文件来自OneThink
- /**
- * 系统环境检测
- * @return array 系统环境数据
- */
- function check_env(){
- $items = array(
- 'os' => array('操作系统', '不限制', '类Unix', PHP_OS, 'check'),
- 'php' => array('PHP版本', '5.6', '5.6+', PHP_VERSION, 'check'),
- 'upload' => array('附件上传', '不限制', '2M+', '未知', 'check'),
- 'gd' => array('GD库', '2.0', '2.0+', '未知', 'check'),
- 'disk' => array('磁盘空间', '100M', '不限制', '未知', 'check'),
- );
- // PHP环境检测
- if($items['php'][3] < $items['php'][1]){
- $items['php'][4] = 'times text-warning';
- session('error', true);
- }
- // 附件上传检测
- if(@ini_get('file_uploads'))
- $items['upload'][3] = ini_get('upload_max_filesize');
- // GD库检测
- $tmp = function_exists('gd_info') ? gd_info() : array();
- if(empty($tmp['GD Version'])){
- $items['gd'][3] = '未安装';
- $items['gd'][4] = 'times text-warning';
- session('error', true);
- } else {
- $items['gd'][3] = $tmp['GD Version'];
- }
- unset($tmp);
- // 磁盘空间检测
- if(function_exists('disk_free_space')) {
- $disk_size = floor(disk_free_space(Env::get('app_path')) / (1024*1024));
- $items['disk'][3] = $disk_size.'M';
- if ($disk_size < 100) {
- $items['disk'][4] = 'times text-warning';
- session('error', true);
- }
- }
- return $items;
- }
- /**
- * 目录,文件读写检测
- * @return array 检测数据
- */
- function check_dirfile(){
- $items = array(
- array('dir', '可写', 'check', '../application'),
- array('dir', '可写', 'check', '../config'),
- array('dir', '可写', 'check', '../data'),
- array('dir', '可写', 'check', '../export'),
- array('dir', '可写', 'check', '../packet'),
- array('dir', '可写', 'check', '../plugins'),
- array('dir', '可写', 'check', './static'),
- array('dir', '可写', 'check', './uploads'),
- array('dir', '可写', 'check', '../runtime'),
- array('dir', '可写', 'check', '../store'),
- );
- foreach ($items as &$val) {
- $item = INSTALL_APP_PATH . $val[3];
- if('dir' == $val[0]){
- if(!is_writable($item)) {
- if(is_dir($item)) {
- $val[1] = '可读';
- $val[2] = 'times text-warning';
- session('error', true);
- } else {
- $val[1] = '不存在';
- $val[2] = 'times text-warning';
- session('error', true);
- }
- }
- } else {
- if(file_exists($item)) {
- if(!is_writable($item)) {
- $val[1] = '不可写';
- $val[2] = 'times text-warning';
- session('error', true);
- }
- } else {
- if(!is_writable(dirname($item))) {
- $val[1] = '不存在';
- $val[2] = 'times text-warning';
- session('error', true);
- }
- }
- }
- }
- return $items;
- }
- /**
- * 函数检测
- * @return array 检测数据
- */
- function check_func(){
- $items = array(
- array('pdo','支持','check','类'),
- array('pdo_mysql','支持','check','模块'),
- array('fileinfo','支持','check','模块'),
- array('curl','支持','check','模块'),
- array('file_get_contents', '支持', 'check','函数'),
- array('mb_strlen', '支持', 'check','函数'),
- array('scandir', '支持', 'check','函数'),
- );
- foreach ($items as &$val) {
- if(('类'==$val[3] && !class_exists($val[0]))
- || ('模块'==$val[3] && !extension_loaded($val[0]))
- || ('函数'==$val[3] && !function_exists($val[0]))
- ){
- $val[1] = '不支持';
- $val[2] = 'times text-warning';
- session('error', true);
- }
- }
- return $items;
- }
- /**
- * 写入配置文件
- * @param $config
- * @return array 配置信息
- */
- function write_config($config){
- if(is_array($config)){
- //读取配置内容
- $conf = file_get_contents(Env::get('app_path') . 'install/data/database.tpl');
- // 替换配置项
- foreach ($config as $name => $value) {
- $conf = str_replace("[{$name}]", $value, $conf);
- }
- //写入应用配置文件
- if(file_put_contents(Env::get('config_path') . 'database.php', $conf)){
- show_msg('配置文件写入成功');
- } else {
- show_msg('配置文件写入失败!', 'error');
- session('error', true);
- }
- return '';
- }
- }
- /**
- * 创建数据表
- * @param $db 数据库连接资源
- * @param string $prefix 表前缀
- */
- function create_tables($db, $prefix = ''){
- // 读取SQL文件
- $sql = file_get_contents(Env::get('app_path') . 'install/data/dolphin.sql');
- $sql = str_replace("\r", "\n", $sql);
- $sql = explode(";\n", $sql);
- // 替换表前缀
- $orginal = config('original_table_prefix');
- $sql = str_replace(" `{$orginal}", " `{$prefix}", $sql);
- // 开始安装
- show_progress('0%');
- $all_table = config('install_table_total');
- $i = 1;
- foreach ($sql as $value) {
- $value = trim($value);
- if(empty($value)) continue;
- $msg = (int)($i/$all_table*100) . '%';
- if(false !== $db->execute($value)){
- show_progress($msg);
- } else {
- show_progress($msg, 'error');
- session('error', true);
- }
- $i++;
- }
- }
- /**
- * 更新数据表
- * @param $db 数据库连接资源
- * @param string $prefix 表前缀
- */
- function update_tables($db, $prefix = ''){
- //读取SQL文件
- $sql = file_get_contents(Env::get('app_path') . 'install/data/update.sql');
- $sql = str_replace("\r", "\n", $sql);
- $sql = explode(";\n", $sql);
- // 替换表前缀
- $sql = str_replace(" `dp_", " `{$prefix}", $sql);
- //开始安装
- show_progress('0%');
- $all_table = config('update_data_total');
- $i = 1;
- $msg = '';
- foreach ($sql as $value) {
- $value = trim($value);
- if(empty($value)) continue;
- if(substr($value, 0, 12) == 'CREATE TABLE') {
- $msg = (int)($i/$all_table*100) . '%';
- if(($db->execute($value)) === false){
- session('error', true);
- }
- } else {
- if(substr($value, 0, 8) == 'UPDATE `') {
- $msg = (int)($i/$all_table*100) . '%';
- } else if(substr($value, 0, 11) == 'ALTER TABLE'){
- $msg = (int)($i/$all_table*100) . '%';
- } else if(substr($value, 0, 11) == 'INSERT INTO'){
- $msg = (int)($i/$all_table*100) . '%';
- }
- if(($db->execute($value)) === false){
- session('error', true);
- }
- }
- if ($msg != '') {
- show_progress($msg);
- $i++;
- }
- }
- }
- /**
- * 及时显示提示信息
- * @param string $msg 提示信息
- * @param string $class 类名
- */
- function show_msg($msg, $class = ''){
- echo "<script type=\"text/javascript\">showmsg(\"{$msg}\", \"{$class}\")</script>";
- flush();
- ob_flush();
- }
- /**
- * 显示进度
- * @param $msg
- * @param string $class
- * @author 蔡伟明 <314013107@qq.com>
- */
- function show_progress($msg, $class = ''){
- echo "<script type=\"text/javascript\">show_progress(\"{$msg}\", \"{$class}\")</script>";
- flush();
- ob_flush();
- }
|