<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # ThinkPHP5實現安裝程序 **install.php** - `public/install.php` > 首先在`thinkphp5`框架下的入口文件`index.php`,加入如下判斷 ``` // 1.判斷當前 php 版本 if (version_compare(PHP_VERSION,'5.6','<')) die('require PHP > 5.6'); // 判斷是否安裝 后面的地址隨便你,你愿意扔那里就扔哪里 if (!is_file(APP_PATH . 'admin/command/Install/install.lock')) { // 這個地址也是你的install.php 文件在那里就指向那哪里 header("location:./install.php"); exit; } ``` > 其次在`install.php`進行詳細代碼 - 定義站點名稱 ```php $sitename = "Your sitename" ``` - 定義報錯信息 ``` $errInfo = ''; ``` - 定義目錄分隔符 ``` define('DS', DIRECTORY_SEPARATOR) ``` - 定義根目錄 ``` define('ROOT_PATH', __DIR__ . DS . '..' . DS); ``` - 定義應用目錄 ``` define('APP_PATH', ROOT_PATH . 'application' . DS); ``` - 定義安裝包目錄(你的在哪里就定義在哪里) ``` define('INSTALL_PATH', APP_PATH . 'admin' . DS . 'command' . DS . 'Install' . DS); ``` - 判斷文件是否有寫的權限 ``` function is_really_writable($file) { if (DIRECTORY_SEPARATOR == '/' AND @ ini_get("safe_mode") == false) { return is_writable($file); } if (!is_file($file) OR ($fp = @fopen($file, "r+")) === false) { return false; } fclose($fp); return true; } ``` - 檢測關鍵目錄是否存在 ``` $checkDirs = [ 'thinkphp', 'vendor', 'public' . DS . 'assets' . DS . 'libs' ]; ``` - 緩存目錄 ``` $runtimeDir = APP_PATH . 'runtime'; ``` - 數據庫配置文件 - thinkphp 5.0 ``` $dbConfigFile = APP_PATH . 'database.php'; ``` - thinkphp 5.1 config目錄下的 `database.php`配置文件 ``` $dbConfigFile = 'config' . '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)) { $open_basedir = ini_get('open_basedir'); if ($open_basedir) { $dirArr = explode(PATH_SEPARATOR, $open_basedir); if ($dirArr && in_array(__DIR__, $dirArr)) { $errInfo = '當前服務器因配置了open_basedir,導致無法讀取父目錄<br><a href="https://forum.fastadmin.net/thread/1145?ref=install" target="_blank">點擊查看解決辦法</a>'; } } if (!$errInfo) { $errInfo = '當前權限不足,無法寫入配置文件application/database.php<br><a href="https://forum.fastadmin.net/thread/1145?ref=install" target="_blank">點擊查看解決辦法</a>'; } } else { $dirArr = []; foreach ($checkDirs as $k => $v) { if (!is_dir(ROOT_PATH . $v)) { $errInfo = '當前代碼僅包含核心代碼,請composer install'; break; } } } } } } ``` - 當前`post`請求 ``` if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') { if ($errInfo) { echo $errInfo; exit; } $err = ''; $mysqlHostname = isset($_POST['mysqlHost']) ? $_POST['mysqlHost'] : '127.0.0.1'; $mysqlHostport = isset($_POST['mysqlHostport']) ? $_POST['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 (!preg_match("/^\w{3,12}$/", $adminUsername)) { echo "用戶名只能由3-12位數字、字母、下劃線組合"; exit; } if (!preg_match("/^[\S]{6,16}$/", $adminPassword)) { echo "密碼長度必須在6-16位之間,不能包含空格"; exit; } if ($adminPassword !== $adminPasswordConfirmation) { echo "兩次輸入的密碼不一致"; 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" )); //檢測是否支持innodb存儲引擎 $pdoStatement = $pdo->query("SHOW VARIABLES LIKE 'innodb_version'"); $result = $pdoStatement->fetch(); if (!$result) { throw new Exception("當前數據庫不支持innodb存儲引擎,請開啟后再重新嘗試安裝"); } $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'"); $adminName = ''; if (is_file($adminFile)) { $x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $adminName = substr(str_shuffle(str_repeat($x, ceil(10 / strlen($x)))), 1, 10) . '.php'; rename($adminFile, ROOT_PATH . 'public' . DS . $adminName); } echo "success|{$adminName}"; } catch (PDOException $e) { $err = $e->getMessage(); } catch (Exception $e) { $err = $e->getMessage(); } echo $err; exit; } ``` > 下面是一些顯示的安裝頁面,頁面內容,自己根據`html`和`css`能力部署頁面
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看