From 0fb49c1a9aa4d7f8306bb326675f3323a1a77117 Mon Sep 17 00:00:00 2001 From: ox5a0b54 Date: Thu, 1 Aug 2024 15:38:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/command/Install.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/application/admin/command/Install.php b/application/admin/command/Install.php index 8b37c903..f87f4b94 100644 --- a/application/admin/command/Install.php +++ b/application/admin/command/Install.php @@ -214,22 +214,28 @@ class Install extends Command $adminFile = ROOT_PATH . 'public' . DS . 'admin.php'; // 数据库配置文件 - $dbConfigFile = APP_PATH . 'database.php'; - $dbConfigText = @file_get_contents($dbConfigFile); + // 数据库配置文件 + $envSampleFile = ROOT_PATH . '.env.sample'; + $envFile = ROOT_PATH . '.env'; + if (!file_exists($envFile)) { + if (!copy($envSampleFile, $envFile)) { + throw new Exception(__('Failed to copy %s to %s', '.env.sample', '.env')); + } + } + + $envText = @file_get_contents($envFile); + $callback = function ($matches) use ($mysqlHostname, $mysqlHostport, $mysqlUsername, $mysqlPassword, $mysqlDatabase, $mysqlPrefix) { $field = "mysql" . ucfirst($matches[1]); $replace = $$field; - if ($matches[1] == 'hostport' && $mysqlHostport == 3306) { - $replace = ''; - } - return "'{$matches[1]}'{$matches[2]}=>{$matches[3]}Env::get('database.{$matches[1]}', '{$replace}'),"; + return "{$matches[1]} = {$replace}"; }; - $dbConfigText = preg_replace_callback("/'(hostname|database|username|password|hostport|prefix)'(\s+)=>(\s+)Env::get\((.*)\)\,/", $callback, $dbConfigText); + $envText = preg_replace_callback("/(hostname|database|username|password|hostport|prefix)\s*=\s*(.*)/", $callback, $envText); // 检测能否成功写入数据库配置 - $result = @file_put_contents($dbConfigFile, $dbConfigText); + $result = @file_put_contents($envFile, $envText); if (!$result) { - throw new Exception(__('The current permissions are insufficient to write the file %s', 'application/database.php')); + throw new Exception(__('The current permissions are insufficient to write the file %s', '.env')); } // 设置新的Token随机密钥key