getRootPath() . 'install.lock')) { exit('你已安装成功,需要重新安装请删除 install.lock 文件'); } Cache::clear(); reset_opcache(); } public function index() { // 检查安装环境 $requirements = [ 'PHP >= 7.4' => PHP_VERSION >= 7.4, 'PDO_MySQL' => extension_loaded("pdo_mysql"), 'CURL' => extension_loaded("curl"), 'ZipArchive' => class_exists("ZipArchive"), 'runtime写入权限' => is_writable(app()->getRuntimePath()), ]; reset_opcache(); $step = Request::param('step'); View::assign([ 'step' => $step, 'requirements' => $requirements, ]); return view('../view/install/index.html'); } public function database() { $params = Request::param(); $rules = [ 'hostname' => 'require', 'hostport' => 'require|integer', 'username' => 'require', 'password' => 'require', 'database' => 'require', ]; $validate = Validate::rule($rules); if (!$validate->check($params)) { return msg('error', $validate->getError()); } $dsn = 'mysql:host=' . $params['hostname'] . ';dbname=' . $params['database'] . ';port=' . $params['hostport'] . ';charset=utf8'; try { new PDO($dsn, $params['username'], $params['password']); } catch (\Exception $e) { return msg('error', $e->getMessage()); } try { $envFile = file_get_contents(app()->getRootPath() . '.env.example'); $envOperation = new EnvOperation($envFile); foreach (array_keys($rules) as $value) { $envOperation->set(mb_strtoupper($value), $params[$value]); } $envOperation->save(); } catch (\Exception $e) { return msg('error', $e->getMessage()); } return msg(); } public function init_data() { try { $filename = app()->getRootPath() . 'install.sql'; if (!is_file($filename)) { throw new Exception('数据库 install.sql 文件不存在'); } $install_sql = file($filename); //写入数据库 $execSQL = new ExecSQL(); $install_sql = $execSQL->purify($install_sql); foreach ($install_sql as $sql) { $execSQL->exec($sql); if (!empty($execSQL->getErrors())) { throw new Exception($execSQL->getErrors()[0]); } } } catch (\Exception $e) { return msg('error', $e->getMessage()); } return msg(); } public function admin() { $params = Request::param(); $rules = [ 'username|用户名' => 'require', 'password|密码' => 'require', ]; $validate = Validate::rule($rules); if (!$validate->check($params)) { return msg('error', $validate->getError()); } config_set("admin_username", $params['username']); config_set("admin_password", password_hash($params['password'], PASSWORD_DEFAULT)); config_set("syskey", Str::random(16)); file_put_contents(app()->getRootPath() . 'install.lock', format_date()); return msg(); } }