"https://jq.qq.com/?_wv=1027&k=487PNBb", 'gitee' => 'https://gitee.com/karson/fastadmin/attach_files', 'home' => 'https://www.fastadmin.net?ref=install', 'forum' => 'https://forum.fastadmin.net?ref=install', 'doc' => 'https://doc.fastadmin.net?ref=install', ); // 检测目录是否存在 $checkDirs = [ 'thinkphp', 'vendor', 'public' . DS . 'assets' . DS . 'libs' ]; //缓存目录 $runtimeDir = APP_PATH . 'runtime'; //错误信息 $errInfo = ''; //数据库配置文件 $dbConfigFile = APP_PATH . 'database.php'; // 锁定的文件 $lockFile = INSTALL_PATH . 'install.lock'; if (is_file($lockFile)) { $errInfo = "当前已经安装{$sitename},如果需要重新安装,请手动移除application/admin/command/Install/install.lock文件"; } else if (version_compare(PHP_VERSION, '5.5.0', '<')) { $errInfo = "当前版本(" . PHP_VERSION . ")过低,请使用PHP5.5以上版本"; } else if (!extension_loaded("PDO")) { $errInfo = "当前未开启PDO,无法进行安装"; } else if (!is_really_writable($dbConfigFile)) { $errInfo = '当前权限不足,无法写入配置文件application/database.php
点击查看解决办法'; } else { $dirArr = []; foreach ($checkDirs as $k => $v) { if (!is_dir(ROOT_PATH . $v)) { $errInfo = '当前代码仅包含核心代码,请前往官网下载完整包或资源包覆盖后再尝试安装,立即前往下载'; break; } } } // 当前是POST请求 if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') { $err = ''; $mysqlHostname = isset($_POST['mysqlHost']) ? $_POST['mysqlHost'] : '127.0.0.1'; $mysqlHostport = 3306; $hostArr = explode(':', $mysqlHostname); if (count($hostArr) > 1) { $mysqlHostname = $hostArr[0]; $mysqlHostport = $hostArr[1]; } $mysqlUsername = isset($_POST['mysqlUsername']) ? $_POST['mysqlUsername'] : 'root'; $mysqlPassword = isset($_POST['mysqlPassword']) ? $_POST['mysqlPassword'] : ''; $mysqlDatabase = isset($_POST['mysqlDatabase']) ? $_POST['mysqlDatabase'] : 'fastadmin'; $mysqlPrefix = isset($_POST['mysqlPrefix']) ? $_POST['mysqlPrefix'] : 'fa_'; $adminUsername = isset($_POST['adminUsername']) ? $_POST['adminUsername'] : 'admin'; $adminPassword = isset($_POST['adminPassword']) ? $_POST['adminPassword'] : '123456'; $adminPasswordConfirmation = isset($_POST['adminPasswordConfirmation']) ? $_POST['adminPasswordConfirmation'] : '123456'; $adminEmail = isset($_POST['adminEmail']) ? $_POST['adminEmail'] : 'admin@admin.com'; if ($adminPassword !== $adminPasswordConfirmation) { echo "两次输入的密码不一致"; exit; } else if (!preg_match("/^\w+$/", $adminUsername)) { echo "用户名只能输入字母、数字、下划线"; exit; } else if (!preg_match("/^[\S]+$/", $adminPassword)) { echo "密码不能包含空格"; exit; } else if (strlen($adminUsername) < 3 || strlen($adminUsername) > 12) { echo "用户名请输入3~12位字符"; exit; } else if (strlen($adminPassword) < 6 || strlen($adminPassword) > 16) { echo "密码请输入6~16位字符"; exit; } try { //检测能否读取安装文件 $sql = @file_get_contents(INSTALL_PATH . 'fastadmin.sql'); if (!$sql) { throw new Exception("无法读取application/admin/command/Install/fastadmin.sql文件,请检查是否有读权限"); } $sql = str_replace("`fa_", "`{$mysqlPrefix}", $sql); $pdo = new PDO("mysql:host={$mysqlHostname};port={$mysqlHostport}", $mysqlUsername, $mysqlPassword, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" )); $pdo->query("CREATE DATABASE IF NOT EXISTS `{$mysqlDatabase}` CHARACTER SET utf8 COLLATE utf8_general_ci;"); $pdo->query("USE `{$mysqlDatabase}`"); $pdo->exec($sql); $config = @file_get_contents($dbConfigFile); $callback = function($matches) use($mysqlHostname, $mysqlHostport, $mysqlUsername, $mysqlPassword, $mysqlDatabase, $mysqlPrefix) { $field = ucfirst($matches[1]); $replace = ${"mysql{$field}"}; if ($matches[1] == 'hostport' && $mysqlHostport == 3306) { $replace = ''; } return "'{$matches[1]}'{$matches[2]}=>{$matches[3]}Env::get('database.{$matches[1]}', '{$replace}'),"; }; $config = preg_replace_callback("/'(hostname|database|username|password|hostport|prefix)'(\s+)=>(\s+)Env::get\((.*)\)\,/", $callback, $config); //检测能否成功写入数据库配置 $result = @file_put_contents($dbConfigFile, $config); if (!$result) { throw new Exception("无法写入数据库信息到application/database.php文件,请检查是否有写权限"); } //检测能否成功写入lock文件 $result = @file_put_contents($lockFile, 1); if (!$result) { throw new Exception("无法写入安装锁定到application/admin/command/Install/install.lock文件,请检查是否有写权限"); } $newSalt = substr(md5(uniqid(true)), 0, 6); $newPassword = md5(md5($adminPassword) . $newSalt); $pdo->query("UPDATE {$mysqlPrefix}admin SET username = '{$adminUsername}', email = '{$adminEmail}',password = '{$newPassword}', salt = '{$newSalt}' WHERE username = 'admin'"); echo "success"; } catch (Exception $e) { $err = $e->getMessage(); } catch (PDOException $e) { $err = $e->getMessage(); } echo $err; exit; } ?> 安装<?php echo $sitename; ?>

安装

若你在安装中遇到麻烦可点击 安装文档 交流社区 QQ交流群