详情'; } $ret['php']['pdo']['ok'] = extension_loaded('pdo') && extension_loaded('pdo_mysql'); if($ret['php']['pdo']['ok']) { $ret['php']['pdo']['value'] = ''; $ret['php']['pdo']['class'] = 'success'; } else { $ret['php']['pdo']['failed'] = true; $ret['php']['pdo']['value'] = ''; $ret['php']['pdo']['class'] = 'warning'; $ret['php']['pdo']['remark'] = '您的PHP环境不支持PDO, 请开启此扩展. 详情'; } $ret['php']['fopen']['ok'] = @ini_get('allow_url_fopen') && function_exists('fsockopen'); if($ret['php']['fopen']['ok']) { $ret['php']['fopen']['value'] = ''; } else { $ret['php']['fopen']['value'] = ''; } $ret['php']['curl']['ok'] = extension_loaded('curl') && function_exists('curl_init'); if($ret['php']['curl']['ok']) { $ret['php']['curl']['value'] = ''; $ret['php']['curl']['class'] = 'success'; } else { $ret['php']['curl']['value'] = ''; $ret['php']['curl']['class'] = 'danger'; $ret['php']['curl']['remark'] = '您的PHP环境不支持cURL, 也不支持 allow_url_fopen, 系统无法正常运行. 详情'; $ret['php']['curl']['failed'] = true; } $ret['php']['ssl']['ok'] = extension_loaded('openssl'); if($ret['php']['ssl']['ok']) { $ret['php']['ssl']['value'] = ''; $ret['php']['ssl']['class'] = 'success'; } else { $ret['php']['ssl']['value'] = ''; $ret['php']['ssl']['class'] = 'danger'; $ret['php']['ssl']['failed'] = true; $ret['php']['ssl']['remark'] = '没有启用OpenSSL, 将无法访问公众平台的接口, 系统无法正常运行. 详情'; } $ret['php']['gd']['ok'] = extension_loaded('gd'); if($ret['php']['gd']['ok']) { $ret['php']['gd']['value'] = ''; $ret['php']['gd']['class'] = 'success'; } else { $ret['php']['gd']['value'] = ''; $ret['php']['gd']['class'] = 'danger'; $ret['php']['gd']['failed'] = true; $ret['php']['gd']['remark'] = '没有启用GD, 将无法正常上传和压缩图片, 系统无法正常运行. 详情'; } $ret['php']['dom']['ok'] = class_exists('DOMDocument'); if($ret['php']['dom']['ok']) { $ret['php']['dom']['value'] = ''; $ret['php']['dom']['class'] = 'success'; } else { $ret['php']['dom']['value'] = ''; $ret['php']['dom']['class'] = 'danger'; $ret['php']['dom']['failed'] = true; $ret['php']['dom']['remark'] = '没有启用DOMDocument, 将无法正常安装使用模块, 系统无法正常运行. 详情'; } $ret['php']['session']['ok'] = ini_get('session.auto_start'); if($ret['php']['session']['ok'] == 0 || strtolower($ret['php']['session']['ok']) == 'off') { $ret['php']['session']['value'] = ''; $ret['php']['session']['class'] = 'success'; } else { $ret['php']['session']['value'] = ''; $ret['php']['session']['class'] = 'danger'; $ret['php']['session']['failed'] = true; $ret['php']['session']['remark'] = '系统session.auto_start开启, 将无法正常注册会员, 系统无法正常运行. 详情'; } $ret['php']['asp_tags']['ok'] = ini_get('asp_tags'); if(empty($ret['php']['asp_tags']['ok']) || strtolower($ret['php']['asp_tags']['ok']) == 'off') { $ret['php']['asp_tags']['value'] = ''; $ret['php']['asp_tags']['class'] = 'success'; } else { $ret['php']['asp_tags']['value'] = ''; $ret['php']['asp_tags']['class'] = 'danger'; $ret['php']['asp_tags']['failed'] = true; $ret['php']['asp_tags']['remark'] = '请禁用可以使用ASP 风格的标志,配置php.ini中asp_tags = Off'; } $ret['write']['root']['ok'] = local_writeable(IA_ROOT . '/'); if($ret['write']['root']['ok']) { $ret['write']['root']['value'] = ''; $ret['write']['root']['class'] = 'success'; } else { $ret['write']['root']['value'] = ''; $ret['write']['root']['class'] = 'danger'; $ret['write']['root']['failed'] = true; $ret['write']['root']['remark'] = '本地目录无法写入, 将无法使用自动更新功能, 系统无法正常运行. 详情'; } $ret['write']['data']['ok'] = local_writeable(IA_ROOT . '/data'); if($ret['write']['data']['ok']) { $ret['write']['data']['value'] = ''; $ret['write']['data']['class'] = 'success'; } else { $ret['write']['data']['value'] = ''; $ret['write']['data']['class'] = 'danger'; $ret['write']['data']['failed'] = true; $ret['write']['data']['remark'] = 'data目录无法写入, 将无法写入配置文件, 系统无法正常安装. '; } $ret['continue'] = true; foreach($ret['php'] as $opt) { if($opt['failed']) { $ret['continue'] = false; break; } } if($ret['write']['failed']) { $ret['continue'] = false; } tpl_install_env($ret); } if($action == 'db') { if($ispost) { if($_POST['do'] != 'continue') { setcookie('action', 'env'); header('location: ?refresh'); exit(); } $family = $_POST['family'] == 'x' ? 'x' : 'v'; $db = $_POST['db']; $user = $_POST['user']; try { $pieces = explode(':', $db['server']); $db['server'] = $pieces[0]; $db['port'] = !empty($pieces[1]) ? $pieces[1] : '3306'; $link = new PDO("mysql:host={$db['server']};port={$db['port']}", $db['username'], $db['password']); // dns可以没有dbname $link->exec("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary"); $link->exec("SET sql_mode=''"); if ($link->errorCode() != '00000') { $errorInfo = $link->errorInfo(); $error = $errorInfo[2]; } else { $statement = $link->query("SHOW DATABASES LIKE '{$db['name']}';"); $fetch = $statement->fetch(); if (empty($fetch)){ if (substr($link->getAttribute(PDO::ATTR_SERVER_VERSION), 0, 3) > '4.1') { $link->query("CREATE DATABASE IF NOT EXISTS `{$db['name']}` DEFAULT CHARACTER SET utf8"); } else { $link->query("CREATE DATABASE IF NOT EXISTS `{$db['name']}`"); } } $statement = $link->query("SHOW DATABASES LIKE '{$db['name']}';"); $fetch = $statement->fetch(); if (empty($fetch)) { $error .= "数据库不存在且创建数据库失败.
"; } if ($link->errorCode() != '00000') { $errorInfo = $link->errorInfo(); $error .= $errorInfo[2]; } } } catch (PDOException $e) { $error = $e->getMessage(); if (strpos($error, 'Access denied for user') !== false) { $error = '您的数据库访问用户名或是密码错误.
'; } else { $error = iconv('gbk', 'utf8', $error); } } if(empty($error)) { $link->exec("USE {$db['name']}"); $statement = $link->query("SHOW TABLES LIKE '{$db['prefix']}%';"); if ($statement->fetch()) { $error = '您的数据库不为空,请重新建立数据库或是清空该数据库或更改表前缀!'; } } if(empty($error)) { $config = local_config(); $cookiepre = local_salt(4) . '_'; $authkey = local_salt(8); $config = str_replace(array( '{db-server}', '{db-username}', '{db-password}', '{db-port}', '{db-name}', '{db-tablepre}', '{cookiepre}', '{authkey}', '{attachdir}' ), array( $db['server'], $db['username'], $db['password'], $db['port'], $db['name'], $db['prefix'], $cookiepre, $authkey, 'attachment' ), $config); $verfile = IA_ROOT . '/framework/version.inc.php'; $dbfile = IA_ROOT . '/data/db.php'; if($_POST['type'] == 'remote') { $link = NULL; $ins = remote_install(); if(empty($ins)) { die(''); } if($ins == 'error') { die(''); } $link = new PDO("mysql:dbname={$db['name']};host={$db['server']};port={$db['port']}", $db['username'], $db['password']); $link->exec("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary"); $link->exec("SET sql_mode=''"); $tmpfile = IA_ROOT . '/we7source.tmp'; file_put_contents($tmpfile, $ins); $zip = new ZipArchive; $res = $zip->open($tmpfile); if ($res === TRUE) { $zip->extractTo(IA_ROOT); $zip->close(); } else { die(''); } unlink($tmpfile); } if(file_exists(IA_ROOT . '/index.php') && is_dir(IA_ROOT . '/web') && file_exists($verfile) && file_exists($dbfile)) { $dat = require $dbfile; if(empty($dat) || !is_array($dat)) { die(''); } foreach($dat['schemas'] as $schema) { $sql = local_create_sql($schema); local_run($sql); } foreach($dat['datas'] as $data) { local_run($data); } } else { die(''); } $salt = local_salt(8); $password = sha1("{$user['password']}-{$salt}-{$authkey}"); $link->exec("INSERT INTO {$db['prefix']}users (username, password, salt, joindate, groupid) VALUES('{$user['username']}', '{$password}', '{$salt}', '" . time() . "', 1)"); local_mkdirs(IA_ROOT . '/data'); file_put_contents(IA_ROOT . '/data/config.php', $config); touch(IA_ROOT . '/data/install.lock'); setcookie('action', 'finish'); header('location: ?refresh'); exit(); } } tpl_install_db($error); } if($action == 'finish') { setcookie('action', '', -10); $dbfile = IA_ROOT . '/data/db.php'; @unlink($dbfile); define('IN_SYS', true); require IA_ROOT . '/framework/bootstrap.inc.php'; require IA_ROOT . '/web/common/bootstrap.sys.inc.php'; $_W['uid'] = $_W['isfounder'] = 1; load()->web('common'); load()->web('template'); load()->model('setting'); load()->model('cache'); cache_build_frame_menu(); cache_build_setting(); cache_build_users_struct(); cache_build_module_subscribe_type(); tpl_install_finish(); } function local_writeable($dir) { $writeable = 0; if(!is_dir($dir)) { @mkdir($dir, 0777); } if(is_dir($dir)) { if($fp = fopen("$dir/test.txt", 'w')) { fclose($fp); unlink("$dir/test.txt"); $writeable = 1; } else { $writeable = 0; } } return $writeable; } function local_salt($length = 8) { $result = ''; while(strlen($result) < $length) { $result .= sha1(uniqid('', true)); } return substr($result, 0, $length); } function local_config() { $cfg = <<exec($query); if($link->errorCode() != '00000') { $errorInfo = $link->errorInfo(); echo $errorInfo[0] . ": " . $errorInfo[2] . "
"; exit($query); } } } } function local_create_sql($schema) { $pieces = explode('_', $schema['charset']); $charset = $pieces[0]; $engine = $schema['engine']; $sql = "CREATE TABLE IF NOT EXISTS `{$schema['tablename']}` (\n"; foreach ($schema['fields'] as $value) { if(!empty($value['length'])) { $length = "({$value['length']})"; } else { $length = ''; } $signed = empty($value['signed']) ? ' unsigned' : ''; if(empty($value['null'])) { $null = ' NOT NULL'; } else { $null = ''; } if(isset($value['default'])) { $default = " DEFAULT '" . $value['default'] . "'"; } else { $default = ''; } if($value['increment']) { $increment = ' AUTO_INCREMENT'; } else { $increment = ''; } $sql .= "`{$value['name']}` {$value['type']}{$length}{$signed}{$null}{$default}{$increment},\n"; } foreach ($schema['indexes'] as $value) { $fields = implode('`,`', $value['fields']); if($value['type'] == 'index') { $sql .= "KEY `{$value['name']}` (`{$fields}`),\n"; } if($value['type'] == 'unique') { $sql .= "UNIQUE KEY `{$value['name']}` (`{$fields}`),\n"; } if($value['type'] == 'primary') { $sql .= "PRIMARY KEY (`{$fields}`),\n"; } } $sql = rtrim($sql); $sql = rtrim($sql, ','); $sql .= "\n) ENGINE=$engine DEFAULT CHARSET=$charset;\n\n"; return $sql; } function remote_install() { global $family; $token = ''; $pars = array(); $pars['host'] = $_SERVER['HTTP_HOST']; $pars['version'] = '1.0'; $pars['type'] = 'install'; $pars['method'] = 'application.install'; $url = $_SERVER['HTTP_HOST'].'/gateway.php'; $urlset = parse_url($url); $cloudip = gethostbyname($urlset['host']); $headers[] = "Host: {$urlset['host']}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlset['scheme'] . '://' . $cloudip . $urlset['path']); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($pars, '', '&')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $content = curl_exec($ch); curl_close($ch); if (empty($content)) { return showerror(-1, '获取安装信息失败,可能是由于网络不稳定,请重试。'); } return $content; } function tpl_frame() { global $action, $actions; $action = $_COOKIE['action']; $step = array_search($action, $actions); $steps = array(); for($i = 0; $i <= $step; $i++) { if($i == $step) { $steps[$i] = ' list-group-item-info'; } else { $steps[$i] = ' list-group-item-success'; } } $progress = $step * 25 + 25; $content = ob_get_contents(); ob_clean(); $tpl = << 安装系统 - 微擎 - 公众平台自助开源引擎 EOF; echo trim($tpl); } function tpl_install_license() { echo <<
阅读许可协议

微擎1.70商业纯净版安装说明

  • 本微擎由微擎提供
  • 0x2 版本介绍

    1. 0xA 删除所有附件
    2. 0xB 删除测试公众号
    3. 0xC 删除授权和盗版检测

    0x3 数据库优化说明

    1. 0xA 删除所有数据后自增ID归1
    2. 0xB 删除沉余数据

    0x4 对应版本

    1. 微擎1.7.0 20180202150514

    EOF; tpl_frame(); } function tpl_install_env($ret = array()) { if(empty($ret['continue'])) { $continue = ''; } else { $continue = ''; } echo <<
    服务器信息
    参数
    服务器操作系统 {$ret['server']['os']['value']} {$ret['server']['os']['remark']}
    Web服务器环境 {$ret['server']['sapi']['value']} {$ret['server']['sapi']['remark']}
    PHP版本 {$ret['server']['php']['value']} {$ret['server']['php']['remark']}
    程序安装目录 {$ret['server']['dir']['value']} {$ret['server']['dir']['remark']}
    磁盘空间 {$ret['server']['disk']['value']} {$ret['server']['disk']['remark']}
    上传限制 {$ret['server']['upload']['value']} {$ret['server']['upload']['remark']}
    PHP环境要求必须满足下列所有条件,否则系统或系统部份功能将无法使用。
    PHP环境要求
    选项 要求 状态 说明及帮助
    PHP版本 5.3或者5.3以上 {$ret['php']['version']['value']} {$ret['php']['version']['remark']}
    cURL 支持 {$ret['php']['curl']['value']} {$ret['php']['curl']['remark']}
    PDO 支持 {$ret['php']['pdo']['value']} {$ret['php']['pdo']['remark']}
    openSSL 支持 {$ret['php']['ssl']['value']} {$ret['php']['ssl']['remark']}
    GD2 支持 {$ret['php']['gd']['value']} {$ret['php']['gd']['remark']}
    DOM 支持 {$ret['php']['dom']['value']} {$ret['php']['dom']['remark']}
    session.auto_start 关闭 {$ret['php']['session']['value']} {$ret['php']['session']['remark']}
    asp_tags 关闭 {$ret['php']['asp_tags']['value']} {$ret['php']['asp_tags']['remark']}
    系统要求微擎整个安装目录必须可写, 才能使用微擎所有功能。
    目录权限监测
    目录 要求 状态 说明及帮助
    / 整目录可写 {$ret['write']['root']['value']} {$ret['write']['root']['remark']}
    / data目录可写 {$ret['write']['data']['value']} {$ret['write']['data']['remark']}
    EOF; tpl_frame(); } function tpl_install_db($error = '') { if(!empty($error)) { $message = '
    发生错误: ' . $error . '
    '; } $insTypes = array(); if(file_exists(IA_ROOT . '/index.php') && is_dir(IA_ROOT . '/app') && is_dir(IA_ROOT . '/web')) { $insTypes['local'] = ' checked="checked"'; } else { $insTypes['remote'] = ' checked="checked"'; } if (!empty($_POST['type'])) { $insTypes = array(); $insTypes[$_POST['type']] = ' checked="checked"'; } $disabled = empty($insTypes['local']) ? ' disabled="disabled"' : ''; echo <<
    安装选项
    数据库选项
    管理选项
    EOF; tpl_frame(); } function tpl_install_finish() { $modules = get_store_module(); $themes = get_store_theme(); echo <<

    安装完成

    微擎为你提供优质的CMS!
    恭喜您!已成功安装“微擎 - 公众平台自助开源引擎”系统,您现在可以: 访问网站首页
    EOF; tpl_frame(); } function tpl_resources() { static $res = array( 'logo' => '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', ); return $res; } function showerror($errno, $message = '') { return array( 'errno' => $errno, 'error' => $message, ); } function get_store_module() { load()->func('communication'); $response = ihttp_request(APP_STORE_API, array('controller' => 'store', 'action' => 'api', 'do' => 'module')); $response = json_decode($response['content'], true); $modules = ''; foreach ($response['message'] as $key => $module) { if ($key % 3 < 1) { $modules .= ''; } $module['detail_link'] = APP_STORE_URL . trim($module['detail_link'], '.'); $modules .= ''; $modules .= '
    '; $modules .= ''; $modules .= ''; $modules .= '
    '; $modules .= '
    '; $modules .= '

    ' . $module['title'] . '

    '; $modules .= '

    安装量:' . $module['purchases'] . '

    '; $modules .= '
    '; $modules .= ''; } $modules = substr($modules, 5) . ''; return $modules; } function get_store_theme() { load()->func('communication'); $response = ihttp_request(APP_STORE_API, array('controller' => 'store', 'action' => 'api', 'do' => 'theme')); $response = json_decode($response['content'], true); $themes = ''; $themes .= '
    '; foreach ($response['message'] as $key => $theme) { $theme['detail_link'] = APP_STORE_URL . trim($theme['detail_link'], '.'); $themes .= '
    '; $themes .= ''; $themes .= '

    '; $themes .= '' . $theme['title'] . '

    '; $themes .= '
    '; } $themes .= '
    '; return $themes; }