Files
rxthinkcmf-wiki/RXThinkCMF_ThinkPhp8_EleVue/.vitepress/dist/assets/zh_quickstart_environment.md.Cu4OcYe2.lean.js
T
2026-10-25 18:52:36 +08:00

653 lines
190 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as i,o as a,c as n,a2 as p}from"./chunks/framework.B-QBKwc1.js";const g=JSON.parse('{"title":"开发环境准备","description":"本章指导您从零搭建开发环境,包括 PHP、Composer、数据库、Node.js 的安装与配置。","frontmatter":{},"headers":[],"relativePath":"zh/quickstart/environment.md","filePath":"zh/quickstart/environment.md"}'),l={name:"zh/quickstart/environment.md"};function h(t,s,k,e,d,E){return a(),n("div",null,[...s[0]||(s[0]=[p(`<h1 id="_2-1-开发环境准备" tabindex="-1">2.1 开发环境准备 <a class="header-anchor" href="#_2-1-开发环境准备" aria-label="Permalink to &quot;2.1 开发环境准备&quot;">​</a></h1><div class="tip custom-block"><p class="custom-block-title">概述</p><p>本章指导您从零搭建开发环境,包括 PHP、Composer、数据库、Node.js 的安装与配置。项目支持 MySQL、PostgreSQL、SQL Server、Oracle、SQLite 五种数据库。</p></div><h2 id="安装流程总览" tabindex="-1">安装流程总览 <a class="header-anchor" href="#安装流程总览" aria-label="Permalink to &quot;安装流程总览&quot;">​</a></h2><div class="language-mermaid vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">mermaid</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">graph TD</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> A[开始] --&gt; B[安装 PHP 8.2]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> B --&gt; C[安装 Composer]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> C --&gt; D{选择数据库}</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D --&gt; D1[MySQL]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D --&gt; D2[PostgreSQL]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D --&gt; D3[SQLite]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D --&gt; D4[SQL Server]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D --&gt; D5[Oracle]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D1 --&gt; E[安装 Node.js / pnpm]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D2 --&gt; E</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D3 --&gt; E</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D4 --&gt; E</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> D5 --&gt; E</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> E --&gt; F[配置开发工具]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> F --&gt; G[环境就绪 ✅]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> style A fill:#e8f5e9</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> style G fill:#e8f5e9</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> style D fill:#fff3e0</span></span></code></pre></div><h2 id="PHP-安装" tabindex="-1">PHP 安装 <a class="header-anchor" href="#PHP-安装" aria-label="Permalink to &quot;PHP 安装&quot;">​</a></h2><div class="warning custom-block"><p class="custom-block-title">版本要求</p><p>项目要求 PHP &gt;= 8.2,推荐使用 8.2.x 稳定版。</p></div><h3 id="方式一-XAMPP-推荐新手-" tabindex="-1">方式一:XAMPP(推荐新手) <a class="header-anchor" href="#方式一-XAMPP-推荐新手-" aria-label="Permalink to &quot;方式一:XAMPP(推荐新手)&quot;">​</a></h3><p>XAMPP 是集成了 Apache + MySQL + PHP 的一键安装包,适合快速搭建开发环境。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-5K4Pq" id="tab-_BYfZ1N" checked><label for="tab-_BYfZ1N">Windows</label><input type="radio" name="group-5K4Pq" id="tab-Hzhu9We"><label for="tab-Hzhu9We">macOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 下载 XAMPP</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://www.apachefriends.org/download.html</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 选择 PHP 8.2 版本下载</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装完成后,将 PHP 添加到系统 PATH(永久生效)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 在「系统变量」中找到 Path → 编辑 → 新建</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 添加 XAMPP 的 PHP 路径,例如:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># C:\\xampp8.2\\php</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 确定保存后,打开新的命令行窗口使生效</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 临时生效(仅当前窗口):</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">set</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> PATH=%PATH%</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">C:\\xampp8.2\\php</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 输出:PHP 8.2.x (cli) ...</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 4. 验证扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> findstr</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql mbstring gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 下载 XAMPP for macOS</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://www.apachefriends.org/download.html</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装后,将 PHP 添加到 PATH</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">export PATH=&quot;/Applications/XAMPP/bin:$PATH&quot;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &gt;&gt;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.zshrc</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">source</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.zshrc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 4. 验证扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -E</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql|mbstring|gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div></div></div><h3 id="方式二-包管理器安装" tabindex="-1">方式二:包管理器安装 <a class="header-anchor" href="#方式二-包管理器安装" aria-label="Permalink to &quot;方式二:包管理器安装&quot;">​</a></h3><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-Cg-Tp" id="tab-qWUM2Le" checked><label for="tab-qWUM2Le">Ubuntu / Debian</label><input type="radio" name="group-Cg-Tp" id="tab-Qu5eucq"><label for="tab-Qu5eucq">Rocky Linux / AlmaLinux</label><input type="radio" name="group-Cg-Tp" id="tab-qfKgtPy"><label for="tab-qfKgtPy">CentOS / RHEL</label><input type="radio" name="group-Cg-Tp" id="tab-9NdG97Y"><label for="tab-9NdG97Y">macOS (Homebrew)</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 添加 PHP 官方仓库(获取最新版本)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> add-apt-repository</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ppa:ondrej/php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> update</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 8.2 及常用扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-fpm</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-mysql</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-pgsql</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-sqlite3</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-mbstring</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-xml</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-curl</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-gd</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-zip</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-bcmath</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-intl</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-opcache</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -E</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql|pdo_pgsql|pdo_sqlite|mbstring|gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启用 Remi 仓库(提供 PHP 8.2)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> epel-release</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://rpms.remirepo.net/enterprise/remi-release-9.rpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启用 PHP 8.2 模块</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> module</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> reset</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> module</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php:remi-8.2</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 及常用扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-fpm</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-mysqlnd</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-pgsql</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-sqlite3</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-mbstring</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-xml</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-gd</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-zip</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-bcmath</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-intl</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-opcache</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启动 PHP-FPM(Nginx 场景)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-fpm</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-fpm</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启用 Remi 仓库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> yum</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> epel-release</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> yum</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://rpms.remirepo.net/enterprise/remi-release-8.rpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启用 PHP 8.2</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> yum</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> module</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> reset</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> yum</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> module</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php:remi-8.2</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 及常用扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> yum</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-fpm</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-mysqlnd</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-pgsql</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-sqlite3</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-mbstring</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-xml</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-gd</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-zip</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-bcmath</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-intl</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-opcache</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 8.2</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php@8.2</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 切换到 8.2 版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> link</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php@8.2</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --force</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装可选扩展(如 gd)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-gd</span></span></code></pre></div></div></div><h2 id="PHP-扩展安装" tabindex="-1">PHP 扩展安装 <a class="header-anchor" href="#PHP-扩展安装" aria-label="Permalink to &quot;PHP 扩展安装&quot;">​</a></h2><h3 id="必需扩展" tabindex="-1">必需扩展 <a class="header-anchor" href="#必需扩展" aria-label="Permalink to &quot;必需扩展&quot;">​</a></h3><table tabindex="0"><thead><tr><th>扩展</th><th>用途</th><th>安装命令</th></tr></thead><tbody><tr><td><code>pdo_mysql</code></td><td>MySQL 数据库驱动</td><td>已随 php-mysql 安装</td></tr><tr><td><code>mbstring</code></td><td>多字节字符串处理</td><td>已随 PHP 安装</td></tr><tr><td><code>json</code></td><td>JSON 编解码</td><td>PHP 8.2 自带</td></tr><tr><td><code>openssl</code></td><td>JWT 签名 / HTTPS</td><td>PHP 8.2 自带</td></tr><tr><td><code>fileinfo</code></td><td>文件 MIME 类型检测</td><td>PHP 8.2 自带</td></tr><tr><td><code>gd</code></td><td>图片验证码生成</td><td>已随 php-gd 安装</td></tr></tbody></table><h3 id="数据库扩展-按需安装-" tabindex="-1">数据库扩展(按需安装) <a class="header-anchor" href="#数据库扩展-按需安装-" aria-label="Permalink to &quot;数据库扩展(按需安装)&quot;">​</a></h3><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-xTDaL" id="tab-CFLsLsk" checked><label for="tab-CFLsLsk">MySQL</label><input type="radio" name="group-xTDaL" id="tab-XzA2_wi"><label for="tab-XzA2_wi">PostgreSQL</label><input type="radio" name="group-xTDaL" id="tab-YuG0dKM"><label for="tab-YuG0dKM">SQLite</label><input type="radio" name="group-xTDaL" id="tab-FUqEbUw"><label for="tab-FUqEbUw">SQL Server</label><input type="radio" name="group-xTDaL" id="tab-VSZ5PLJ"><label for="tab-VSZ5PLJ">Oracle</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 大多数安装方式已包含</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 如缺失:</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-mysql</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Ubuntu</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-mysqlnd</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Rocky Linux</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-pgsql</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Ubuntu</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-pgsql</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Rocky Linux</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-sqlite3</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Ubuntu</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-sqlite3</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # Rocky Linux</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 Microsoft ODBC Driver</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 参考 https://learn.microsoft.com/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PDO_SQLSRV 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_sqlsrv.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/pdo_sqlsrv.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ThinkPHP 的 Oracle 连接器使用 PDO(pdo_oci 驱动),必须启用 pdo_oci 扩展</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">#</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># Linux:安装 Oracle Instant Client 后,通过 PECL 安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_oci.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/pdo_oci.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># Windows / XAMPP:XAMPP 8.2 已自带 php_pdo_oci.dll,只需在 php.ini 中启用</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 编辑 D:\\xampp8.2\\php\\php.ini,去掉以下行前面的分号:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ;extension=pdo_oci</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 改为:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pdo_oci</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 同时需要安装 Oracle Instant Client 并配置系统 PATH</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 详见下方「数据库安装 → Oracle」章节</span></span></code></pre></div></div></div><h3 id="可选扩展" tabindex="-1">可选扩展 <a class="header-anchor" href="#可选扩展" aria-label="Permalink to &quot;可选扩展&quot;">​</a></h3><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-jYRRg" id="tab-20W2LRj" checked><label for="tab-20W2LRj">Redis 缓存</label><input type="radio" name="group-jYRRg" id="tab-sQsVhd4"><label for="tab-sQsVhd4">Xdebug 调试</label><input type="radio" name="group-jYRRg" id="tab-8Ufw8_U"><label for="tab-8Ufw8_U">OPcache 加速</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 通过 PECL 安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 启用扩展</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=redis.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/redis.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 仅开发环境安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> xdebug</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 配置 php.ini</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">[xdebug]</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -a</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/cli/php.ini</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">zend_extension=xdebug</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -a</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/cli/php.ini</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">xdebug.mode=debug</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -a</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/cli/php.ini</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">xdebug.client_host=127.0.0.1</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -a</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/cli/php.ini</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">xdebug.client_port=9003</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -a</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/cli/php.ini</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 通常已随 PHP 安装,只需在 php.ini 中启用</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 生产环境必须启用</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sed</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">s/;opcache.enable=1/opcache.enable=1/</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/fpm/php.ini</span></span></code></pre></div></div></div><h3 id="验证所有扩展" tabindex="-1">验证所有扩展 <a class="header-anchor" href="#验证所有扩展" aria-label="Permalink to &quot;验证所有扩展&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 检查必需扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -E</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql|mbstring|json|openssl|fileinfo|gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 检查数据库扩展(按实际使用的数据库)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -E</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql|pdo_pgsql|pdo_sqlsrv|pdo_oci|pdo_sqlite</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">扩展缺失会导致启动失败</p><p>如果上述命令输出为空,说明扩展未安装。最常见的缺失是 <code>pdo_mysql</code> 和 <code>gd</code>,缺少任何一个都会导致功能异常。</p></div><h2 id="Composer-安装" tabindex="-1">Composer 安装 <a class="header-anchor" href="#Composer-安装" aria-label="Permalink to &quot;Composer 安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-0g8vm" id="tab-m8Dg4Ce" checked><label for="tab-m8Dg4Ce">Windows</label><input type="radio" name="group-0g8vm" id="tab-JmBAlOm"><label for="tab-JmBAlOm">Linux / macOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载 Composer 安装器</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://getcomposer.org/Composer-Setup.exe</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 运行安装程序,按提示完成安装</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装过程中会自动检测 PHP 路径</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 打开新的命令行窗口,验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">composer</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -V</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 配置中国镜像(可选)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">composer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -g</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> repo.packagist</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> composer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://mirrors.aliyun.com/composer/</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载安装脚本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -r</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">copy(&#39;https://getcomposer.org/installer&#39;, &#39;composer-setup.php&#39;);</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 全局安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> composer-setup.php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --install-dir=/usr/local/bin</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --filename=composer</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 删除安装脚本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -r</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">unlink(&#39;composer-setup.php&#39;);</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">composer</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -V</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 配置中国镜像(可选,加速下载)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">composer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -g</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> repo.packagist</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> composer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://mirrors.aliyun.com/composer/</span></span></code></pre></div></div></div><h3 id="Composer-依赖清单" tabindex="-1">Composer 依赖清单 <a class="header-anchor" href="#Composer-依赖清单" aria-label="Permalink to &quot;Composer 依赖清单&quot;">​</a></h3><p>运行 <code>composer install</code> 后会安装以下核心依赖:</p><table tabindex="0"><thead><tr><th>依赖</th><th>版本</th><th>说明</th></tr></thead><tbody><tr><td><code>topthink/framework</code></td><td>^6.1.2</td><td>ThinkPHP 框架</td></tr><tr><td><code>topthink/think-orm</code></td><td>^2.0</td><td>数据库 ORM</td></tr><tr><td><code>topthink/think-filesystem</code></td><td>^1.0</td><td>文件系统</td></tr><tr><td><code>firebase/php-jwt</code></td><td>^6.4</td><td>JWT 认证</td></tr><tr><td><code>phpoffice/phpspreadsheet</code></td><td>^5.10</td><td>Excel 导入导出</td></tr></tbody></table><p>开发依赖(<code>require-dev</code>):</p><table tabindex="0"><thead><tr><th>依赖</th><th>版本</th><th>说明</th></tr></thead><tbody><tr><td><code>symfony/var-dumper</code></td><td>^6.0</td><td>调试变量打印(<code>dump()</code> 函数)</td></tr><tr><td><code>topthink/think-trace</code></td><td>^1.0</td><td>调试追踪面板(页面右下角)</td></tr></tbody></table><h2 id="数据库安装" tabindex="-1">数据库安装 <a class="header-anchor" href="#数据库安装" aria-label="Permalink to &quot;数据库安装&quot;">​</a></h2><p>项目支持五种数据库,按需选择一种即可。</p><table tabindex="0"><thead><tr><th>数据库</th><th>推荐场景</th><th>难度</th><th>XAMPP 自带</th><th>说明</th></tr></thead><tbody><tr><td><strong>MySQL</strong></td><td>日常开发、中小项目</td><td>⭐ 低</td><td>✅ 是</td><td>默认推荐,开箱即用</td></tr><tr><td><strong>PostgreSQL</strong></td><td>需要 JSONB、全文检索</td><td>⭐⭐ 中</td><td>❌ 否</td><td>功能丰富,需单独安装</td></tr><tr><td><strong>SQLite</strong></td><td>快速演示、单元测试</td><td>⭐ 低</td><td>✅ 是</td><td>无需数据库服务,零配置</td></tr><tr><td><strong>SQL Server</strong></td><td>企业 Windows 环境</td><td>⭐⭐ 中</td><td>驱动自带</td><td>需单独安装数据库服务</td></tr><tr><td><strong>Oracle</strong></td><td>大型企业项目</td><td>⭐⭐⭐ 高</td><td>驱动自带</td><td>需安装 Instant Client</td></tr></tbody></table><div class="tip custom-block"><p class="custom-block-title">新手推荐</p><p>XAMPP 已集成 MySQL 数据库服务,安装 XAMPP 后无需再单独安装数据库。</p></div><h3 id="MySQL-数据库" tabindex="-1">MySQL 数据库 <a class="header-anchor" href="#MySQL-数据库" aria-label="Permalink to &quot;MySQL 数据库&quot;">​</a></h3><p>MySQL 是项目默认推荐的关系型数据库,XAMPP 已自带,开箱即用。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-dH0uu" id="tab-UnAh-dI" checked><label for="tab-UnAh-dI">Windows</label><input type="radio" name="group-dH0uu" id="tab-HHPNqsN"><label for="tab-HHPNqsN">macOS</label><input type="radio" name="group-dH0uu" id="tab-eMzDsAw"><label for="tab-eMzDsAw">Ubuntu / Debian</label><input type="radio" name="group-dH0uu" id="tab-oZjtBSG"><label for="tab-oZjtBSG">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># XAMPP 已自带 MySQL,无需额外安装</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 在 XAMPP 控制面板启动 MySQL 即可</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 确认扩展已启用(编辑 D:\\xampp8.2\\php\\php.ini):</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pdo_mysql</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 若前面有分号则去掉,保存后重启 XAMPP</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">D:\\xampp8.2\\mysql\\bin\\mysql.exe</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> services</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql_secure_installation</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql_secure_installation</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysqld</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysqld</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mysql_secure_installation</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">\`</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div></div></div><h3 id="PostgreSQL-数据库" tabindex="-1">PostgreSQL 数据库 <a class="header-anchor" href="#PostgreSQL-数据库" aria-label="Permalink to &quot;PostgreSQL 数据库&quot;">​</a></h3><p>PostgreSQL 功能强大,支持 JSONB、全文检索等高级特性,需单独安装。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-Ha3ri" id="tab-8EQADxk" checked><label for="tab-8EQADxk">Windows</label><input type="radio" name="group-Ha3ri" id="tab-5i3qrDq"><label for="tab-5i3qrDq">macOS</label><input type="radio" name="group-Ha3ri" id="tab-RPCuHLR"><label for="tab-RPCuHLR">Ubuntu / Debian</label><input type="radio" name="group-Ha3ri" id="tab-lpBbItf"><label for="tab-lpBbItf">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PostgreSQL</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://www.postgresql.org/download/windows/ 下载安装包</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装过程中记住设置的密码</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 确认扩展已启用(编辑 D:\\xampp8.2\\php\\php.ini):</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pdo_pgsql</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pgsql</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 若前面有分号则去掉,保存后重启 XAMPP</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 设置 postgres 密码(首次)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ALTER USER postgres WITH PASSWORD &#39;root&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> OWNER postgres ENCODING &#39;UTF8&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> services</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 设置 postgres 密码</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ALTER USER postgres WITH PASSWORD &#39;root&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> OWNER postgres ENCODING &#39;UTF8&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT ALL PRIVILEGES ON DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> TO postgres;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql-contrib</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 设置 postgres 密码</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ALTER USER postgres WITH PASSWORD &#39;root&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> OWNER postgres ENCODING &#39;UTF8&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT ALL PRIVILEGES ON DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> TO postgres;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql-setup</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --initdb</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgresql</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 设置 postgres 密码</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ALTER USER postgres WITH PASSWORD &#39;root&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> OWNER postgres ENCODING &#39;UTF8&#39;;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -c</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT ALL PRIVILEGES ON DATABASE </span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> TO postgres;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div></div></div><h3 id="SQLite-数据库" tabindex="-1">SQLite 数据库 <a class="header-anchor" href="#SQLite-数据库" aria-label="Permalink to &quot;SQLite 数据库&quot;">​</a></h3><p>SQLite 无需安装数据库服务器,数据存储在单个文件中,适合开发环境和小型项目。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-89w9M" id="tab-hMUKGpY" checked><label for="tab-hMUKGpY">Windows</label><input type="radio" name="group-89w9M" id="tab-NNwT-ws"><label for="tab-NNwT-ws">macOS</label><input type="radio" name="group-89w9M" id="tab-tk65YYu"><label for="tab-tk65YYu">Ubuntu / Debian</label><input type="radio" name="group-89w9M" id="tab-FVN6k8U"><label for="tab-FVN6k8U">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># XAMPP 已自带 SQLite 扩展,无需额外安装</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 只需创建数据库文件</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mkdir</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> D:</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\x</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ampp</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\h</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">tdocs</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\r</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">untime</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">.</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &gt;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> D:</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\x</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ampp</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\h</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">tdocs</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\r</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">untime</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\d</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">atabase.sqlite</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 确认扩展已启用(编辑 D:\\xampp8.2\\php\\php.ini):</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pdo_sqlite</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=sqlite3</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 若前面有分号则去掉,保存后重启 XAMPP</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># .env 配置</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.TYPE = sqlite</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.DATABASE = D:/xampp8.2/htdocs/runtime/database.sqlite</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sqlite</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库文件</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mkdir</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -p</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">touch</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime/database.sqlite</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php8.2-sqlite3</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库文件</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mkdir</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -p</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">touch</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime/database.sqlite</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> php-sqlite3</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库文件</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mkdir</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -p</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">touch</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime/database.sqlite</span></span></code></pre></div></div></div><h3 id="SQL-Server-数据库" tabindex="-1">SQL Server 数据库 <a class="header-anchor" href="#SQL-Server-数据库" aria-label="Permalink to &quot;SQL Server 数据库&quot;">​</a></h3><p>SQL Server 是微软商业数据库,XAMPP 已自带 pdo_sqlsrv 驱动,Windows 下开箱即用。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-AtLBj" id="tab-mB1bqlv" checked><label for="tab-mB1bqlv">Windows</label><input type="radio" name="group-AtLBj" id="tab-LPtJeC_"><label for="tab-LPtJeC_">macOS</label><input type="radio" name="group-AtLBj" id="tab-WwwROMJ"><label for="tab-WwwROMJ">Ubuntu / Debian</label><input type="radio" name="group-AtLBj" id="tab-vBK1D9h"><label for="tab-vBK1D9h">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># SQL Server 需单独安装(XAMPP 不自带数据库服务,但自带 PHP 驱动)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 下载安装 SQL Server Express:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. XAMPP 已自带 pdo_sqlsrv 扩展,在 php.ini 中启用:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=php_sqlsrv_82_ts_x64.dll</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=php_pdo_sqlsrv_82_ts_x64.dll</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlcmd</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -S</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> localhost</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sa</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -Q</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE [rxthinkcmf.thinkphp8.elevue] COLLATE Chinese_PRC_CI_AS</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># macOS 不原生支持 SQL Server,建议使用 Docker</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">docker</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> run</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ACCEPT_EULA=Y</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">SA_PASSWORD=root</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -p</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> 1433:1433</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --name</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sqlserver</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -d</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mcr.microsoft.com/mssql/server:2022-latest</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlcmd</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -S</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> localhost</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sa</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -Q</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE [rxthinkcmf.thinkphp8.elevue] COLLATE Chinese_PRC_CI_AS</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 安装 SQL Server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">curl</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -sSL</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://packages.microsoft.com/keys/microsoft.asc</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt-key</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> add</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> -</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> add-apt-repository</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">$(</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">wget</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -qO-</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list</span><span style="--shiki-dark:#E7EE98;--shiki-light:#999999;">)</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> update</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mssql-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /opt/mssql/bin/mssql-conf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> setup</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装命令行工具</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mssql-tools18</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">export PATH=&quot;$PATH:/opt/mssql-tools18/bin&quot;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &gt;&gt;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.bashrc</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">source</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.bashrc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_sqlsrv.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/pdo_sqlsrv.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlcmd</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -S</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> localhost</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sa</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -Q</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE [rxthinkcmf.thinkphp8.elevue] COLLATE Chinese_PRC_CI_AS</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 安装 SQL Server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> curl</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -o</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/yum.repos.d/mssql-server.repo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mssql-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /opt/mssql/bin/mssql-conf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> setup</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装命令行工具</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> curl</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -o</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/yum.repos.d/msprod.repo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://packages.microsoft.com/config/rhel/8/prod.repo</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -y</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> mssql-tools18</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">export PATH=&quot;$PATH:/opt/mssql-tools18/bin&quot;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &gt;&gt;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.bashrc</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">source</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.bashrc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_sqlsrv</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_sqlsrv.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php.d/pdo_sqlsrv.ini</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 创建数据库</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlcmd</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -S</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> localhost</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sa</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -Q</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE DATABASE [rxthinkcmf.thinkphp8.elevue] COLLATE Chinese_PRC_CI_AS</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span></code></pre></div></div></div><h3 id="Oracle-数据库" tabindex="-1">Oracle 数据库 <a class="header-anchor" href="#Oracle-数据库" aria-label="Permalink to &quot;Oracle 数据库&quot;">​</a></h3><p>Oracle 是企业级商业数据库,需手动安装 Instant Client 和 pdo_oci 扩展。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-NX5i4" id="tab-KNize41" checked><label for="tab-KNize41">Windows</label><input type="radio" name="group-NX5i4" id="tab-_LapCN5"><label for="tab-_LapCN5">macOS</label><input type="radio" name="group-NX5i4" id="tab-Dqc5-V9"><label for="tab-Dqc5-V9">Ubuntu / Debian</label><input type="radio" name="group-NX5i4" id="tab-C4qrbjv"><label for="tab-C4qrbjv">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># XAMPP 已自带 php_pdo_oci.dll,只需安装 Oracle Instant Client 并在 php.ini 中启用</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 安装 Oracle Instant Client</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 选择 Basic Package,x64,推荐 19c</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 解压到 C:\\oracle\\instantclient_19_20(⚠️ 避免空格与中文)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 配置系统环境变量</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 将 C:\\oracle\\instantclient_19_20 添加到系统 PATH</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 安装 VC++ 运行库(必装)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载:https://aka.ms/vc14/vc_redist.x64.exe</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 4. 启用扩展</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 编辑 D:\\xampp8.2\\php\\php.ini,去掉分号:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=pdo_oci</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 5. 重启 XAMPP(完全关闭再启动)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># .env 配置</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.TYPE = oracle</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.HOSTNAME = 127.0.0.1</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.DATABASE = rxthinkcmf.thinkphp8.elevue</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.USERNAME = root</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.PASSWORD = root</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># DATABASE.HOSTPORT = 1521</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># Oracle 不原生支持 macOS,建议使用 Docker</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">docker</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> run</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -d</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --name</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-xe</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -p</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> 1521:1521</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ORACLE_PWD=root</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> gvenzl/oracle-xe:21-slim</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 安装 Oracle Database</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dpkg</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-database-xe-21c-1.0-1.x86_64.deb</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/init.d/oracle-xe-21c</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> configure</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装 Oracle Instant Client</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dpkg</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-instantclient-basic-</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">*</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">.deb</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dpkg</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-instantclient-devel-</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">*</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">.deb</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_oci.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/pdo_oci.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 4. 创建表空间和用户</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlplus</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> system/root@localhost:1521/XE</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &lt;&lt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B5695977;">EOF</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE TABLESPACE &quot;rxthinkcmf_thinkphp8_elevue&quot; DATAFILE &#39;/opt/oracle/oradata/XE/rxthinkcmf_thinkphp8_elevue.dbf&#39; SIZE 100M AUTOEXTEND ON NEXT 100M;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE USER &quot;root&quot; IDENTIFIED BY &quot;root&quot; DEFAULT TABLESPACE &quot;rxthinkcmf_thinkphp8_elevue&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT CONNECT, RESOURCE, CREATE VIEW TO &quot;root&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT UNLIMITED TABLESPACE TO &quot;root&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">EXIT;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B5695977;">EOF</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 1. 安装 Oracle Database</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -ivh</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-database-xe-21c-1.0-1.x86_64.rpm</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/init.d/oracle-xe-21c</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> configure</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 2. 安装 Oracle Instant Client</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -ivh</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-instantclient-basic-</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">*</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">.rpm</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -ivh</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> oracle-instantclient-devel-</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">*</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">.rpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 3. 安装 PHP 扩展</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pecl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">extension=pdo_oci.so</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> tee</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /etc/php/8.2/mods-available/pdo_oci.ini</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> phpenmod</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pdo_oci</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 4. 创建表空间和用户</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlplus</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> system/root@localhost:1521/XE</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> &lt;&lt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B5695977;">EOF</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE TABLESPACE &quot;rxthinkcmf_thinkphp8_elevue&quot; DATAFILE &#39;/opt/oracle/oradata/XE/rxthinkcmf_thinkphp8_elevue.dbf&#39; SIZE 100M AUTOEXTEND ON NEXT 100M;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">CREATE USER &quot;root&quot; IDENTIFIED BY &quot;root&quot; DEFAULT TABLESPACE &quot;rxthinkcmf_thinkphp8_elevue&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT CONNECT, RESOURCE, CREATE VIEW TO &quot;root&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GRANT UNLIMITED TABLESPACE TO &quot;root&quot;;</span></span>
<span class="line"><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">EXIT;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B5695977;">EOF</span></span></code></pre></div></div></div><h2 id="Redis-安装-可选-" tabindex="-1">Redis 安装(可选) <a class="header-anchor" href="#Redis-安装-可选-" aria-label="Permalink to &quot;Redis 安装(可选)&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-MNheZ" id="tab-hcTxxfO" checked><label for="tab-hcTxxfO">Windows</label><input type="radio" name="group-MNheZ" id="tab-Fa5Eqmj"><label for="tab-Fa5Eqmj">macOS</label><input type="radio" name="group-MNheZ" id="tab-FPWh2BT"><label for="tab-FPWh2BT">Ubuntu / Debian</label><input type="radio" name="group-MNheZ" id="tab-nAxoMdC"><label for="tab-nAxoMdC">Rocky Linux / CentOS</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 1. 安装 Redis 服务端 ──────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载 Redis for Windows</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://github.com/tporadowski/redis/releases 下载 .msi 安装包</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 注:该仓库已归档但仍可用;也可使用 Memurai(Redis Windows 兼容方案)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装完成后,Redis 会作为 Windows 服务自动启动</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证 Redis 服务</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">redis-cli</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ping</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 输出:PONG</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 2. 启用 PHP Redis 扩展 ────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># XAMPP 已自带 php_redis.dll(位于 D:\\xampp8.2\\php\\ext\\)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 编辑 D:\\xampp8.2\\php\\php.ini,去掉以下行前面的分号:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=redis</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 若没有该行,则手动添加:</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 同时建议确认 GD 扩展已启用(验证码功能依赖):</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># extension=gd</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 保存后重启 XAMPP</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 3. 验证 ───────────────────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 命令行验证扩展已加载</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">D:\\xampp8.2\\php\\php.exe</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> findstr</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">redis</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证 PHP 可连接 Redis</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">D:\\xampp8.2\\php\\php.exe</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -r</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">var_dump(class_exists(&#39;Redis&#39;));</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 输出:bool(true)</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">brew</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> services</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">redis-cli</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ping</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> apt</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis-server</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">redis-cli</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ping</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 输出:PONG</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> dnf</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> start</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sudo</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> systemctl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> enable</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> redis</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">redis-cli</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ping</span></span></code></pre></div></div></div><h2 id="Node-js-pnpm-安装" tabindex="-1">Node.js / pnpm 安装 <a class="header-anchor" href="#Node-js-pnpm-安装" aria-label="Permalink to &quot;Node.js / pnpm 安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-DhBmm" id="tab-cUMKYhF" checked><label for="tab-cUMKYhF">Windows (直接安装)</label><input type="radio" name="group-DhBmm" id="tab-6GLs-cI"><label for="tab-6GLs-cI">Windows (nvm-windows)</label><input type="radio" name="group-DhBmm" id="tab-UwORFvr"><label for="tab-UwORFvr">Linux / macOS (nvm)</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载 Node.js 安装包</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://nodejs.org/ 下载 LTS 版本(22.x)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 运行安装程序,按提示完成安装</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 打开新的命令行窗口,验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">node</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 查看 Node.js 版本(需 22+)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 查看 npm 版本(随 Node.js 一起安装)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 pnpm 包管理器(比 npm 更快、磁盘占用更少)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -g → 全局安装(所有项目可用)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -g</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pnpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 查看 pnpm 版本</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># nvm-windows 是 Windows 下的 Node.js 版本管理工具</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 可以轻松切换多个 Node.js 版本</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 1. 安装 nvm-windows ───────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 方式一:下载安装包(推荐)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 访问 https://github.com/coreybutler/nvm-windows/releases</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 下载最新版 nvm-setup.exe,运行安装</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 方式二:使用 winget 安装</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">winget</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> CoreyButler.NVMforWindows</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装完成后,打开新的命令行窗口验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> version</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 2. 安装 Node.js ──────────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 查看可用的 Node.js 版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> list</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> available</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 LTS 版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 22</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 使用该版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> use</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 22</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">node</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # v22.x.x</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 10.x.x</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 3. 安装 pnpm ─────────────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -g</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pnpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 12.x.x</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 4. 常用命令 ──────────────────────────────────────────</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 查看已安装的版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> list</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 切换版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> use</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 18</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装其他版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 20</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 卸载版本</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> uninstall</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 18</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 nvm(Node.js 版本管理器)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">curl</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -o-</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> bash</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">source</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ~/.bashrc</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 或 source ~/.zshrc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 Node.js 22</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 22</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">nvm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> use</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 22</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">node</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # v22.x.x</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 9.x.x</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 安装 pnpm</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> install</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -g</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pnpm</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 12.x.x</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">镜像配置</p><p>如果安装依赖速度较慢,建议为 pnpm 和 npm 均配置国内镜像源。</p></div></div></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># pnpm 镜像</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> set</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> registry</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://registry.npmmirror.com</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># npm 镜像</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> set</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> registry</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> https://registry.npmmirror.com</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 验证配置</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> get</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> registry</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> get</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> registry</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 输出:https://registry.npmmirror.com/</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 如遇 SSL 证书问题(如企业代理环境),可临时关闭严格校验</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> set</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> strict-ssl</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;"> false</span></span></code></pre></div><p>配置完成后可通过 <code>pnpm config list</code> 或 <code>npm config list</code> 查看完整配置:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">$</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> list</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> &quot;user&quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> config</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> from</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> C:</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sers</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\h</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ome</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\.</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">npmrc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">registry</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> =</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">https://registry.npmmirror.com/</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">strict-ssl</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> =</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;"> false</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> node</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> bin</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> location</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> =</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> C:</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">rogram</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> Files</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">odejs</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">ode.exe</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> node</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> version</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> =</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> v22.18.0</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> npm</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> version</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> =</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 11.12.1</span></span></code></pre></div><h3 id="前端依赖清单" tabindex="-1">前端依赖清单 <a class="header-anchor" href="#前端依赖清单" aria-label="Permalink to &quot;前端依赖清单&quot;">​</a></h3><p>运行 <code>cd ui &amp;&amp; pnpm install</code> 后会安装以下核心依赖:</p><table tabindex="0"><thead><tr><th>依赖</th><th>版本</th><th>说明</th></tr></thead><tbody><tr><td><code>vue</code></td><td>^3.4.27</td><td>核心框架</td></tr><tr><td><code>element-plus</code></td><td>^2.7.4</td><td>UI 组件库</td></tr><tr><td><code>pinia</code></td><td>^2.1.7</td><td>状态管理</td></tr><tr><td><code>vue-router</code></td><td>^4.3.2</td><td>路由管理</td></tr><tr><td><code>axios</code></td><td>^0.27.2</td><td>HTTP 请求</td></tr><tr><td><code>typescript</code></td><td>^4.9.5</td><td>类型系统</td></tr><tr><td><code>vite</code></td><td>^3.2.10</td><td>构建工具</td></tr><tr><td><code>tinymce</code></td><td>5.10.3</td><td>富文本编辑器</td></tr><tr><td><code>echarts</code></td><td>^5.5.0</td><td>图表库</td></tr><tr><td><code>tailwindcss</code></td><td>^3.4.3</td><td>CSS 框架</td></tr><tr><td><code>xlsx</code></td><td>^0.18.5</td><td>Excel 处理</td></tr><tr><td><code>@element-plus/icons-vue</code></td><td>^2.3.1</td><td>ElementPlus 图标</td></tr><tr><td><code>dayjs</code></td><td>^1.11.11</td><td>日期处理</td></tr><tr><td><code>lodash</code></td><td>^4.17.21</td><td>工具函数库</td></tr></tbody></table><h2 id="开发工具推荐" tabindex="-1">开发工具推荐 <a class="header-anchor" href="#开发工具推荐" aria-label="Permalink to &quot;开发工具推荐&quot;">​</a></h2><h3 id="PhpStorm" tabindex="-1">PhpStorm <a class="header-anchor" href="#PhpStorm" aria-label="Permalink to &quot;PhpStorm&quot;">​</a></h3><p>专业的 PHP IDE,内置 Xdebug 调试、Composer 管理、数据库工具。</p><ul><li>下载:<a href="https://www.jetbrains.com/phpstorm/" target="_blank" rel="noreferrer">https://www.jetbrains.com/phpstorm/</a></li><li>推荐插件:ThinkPHP、Vue.js</li></ul><h3 id="VS-Code" tabindex="-1">VS Code <a class="header-anchor" href="#VS-Code" aria-label="Permalink to &quot;VS Code&quot;">​</a></h3><p>轻量级编辑器,通过插件支持 PHP 和前端开发。</p><p>推荐插件:</p><table tabindex="0"><thead><tr><th>插件</th><th>说明</th></tr></thead><tbody><tr><td>PHP Intelephense</td><td>PHP 代码提示</td></tr><tr><td>PHP Debug</td><td>Xdebug 调试</td></tr><tr><td>Vue - Official</td><td>Vue 3 支持</td></tr><tr><td>ESLint</td><td>代码检查</td></tr><tr><td>Prettier</td><td>代码格式化</td></tr></tbody></table><h3 id="数据库管理工具" tabindex="-1">数据库管理工具 <a class="header-anchor" href="#数据库管理工具" aria-label="Permalink to &quot;数据库管理工具&quot;">​</a></h3><table tabindex="0"><thead><tr><th>工具</th><th>支持数据库</th><th>说明</th></tr></thead><tbody><tr><td>Navicat</td><td>MySQL/PG/Oracle/SQLServer/SQLite</td><td>商业,功能强大</td></tr><tr><td>DBeaver</td><td>全部</td><td>开源免费</td></tr><tr><td>phpMyAdmin</td><td>MySQL</td><td>Web 界面</td></tr><tr><td>HeidiSQL</td><td>MySQL/PG/SQLServer</td><td>Windows 免费</td></tr></tbody></table><h2 id="Xdebug-配置-PhpStorm-" tabindex="-1">Xdebug 配置(PhpStorm) <a class="header-anchor" href="#Xdebug-配置-PhpStorm-" aria-label="Permalink to &quot;Xdebug 配置(PhpStorm)&quot;">​</a></h2><div class="tip custom-block"><p class="custom-block-title">前置条件</p><p>请先完成 Xdebug 扩展的安装,详见上方「PHP 扩展安装 → 可选扩展 → Xdebug 调试」。</p></div><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-91lwD" id="tab-Cs7m1W6" checked><label for="tab-Cs7m1W6">php.ini 配置</label><input type="radio" name="group-91lwD" id="tab-ScZCOUm"><label for="tab-ScZCOUm">PhpStorm 配置步骤</label></div><div class="blocks"><div class="language-ini vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">[</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#59873A;">xdebug</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">]</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">zend_extension</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">xdebug</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">xdebug.mode</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">debug</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">xdebug.client_host</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">127.0.0.1</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">xdebug.client_port</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">9003</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">xdebug.idekey</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">PHPSTORM</span></span></code></pre></div><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>1. Settings → PHP → Debug → Xdebug 端口设为 9003</span></span>
<span class="line"><span>2. Settings → PHP → Servers → 添加 localhost:80</span></span>
<span class="line"><span>3. 点击电话图标(Start Listening for PHP Debug Connections)</span></span>
<span class="line"><span>4. 在代码中设置断点</span></span>
<span class="line"><span>5. 浏览器访问页面,PhpStorm 会自动停在断点处</span></span></code></pre></div></div></div><h2 id="环境验证清单" tabindex="-1">环境验证清单 <a class="header-anchor" href="#环境验证清单" aria-label="Permalink to &quot;环境验证清单&quot;">​</a></h2><p>完成以上所有安装后,逐项验证:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 环境验证清单(逐项检查,全部通过即可开始开发)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># =============================================================================</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 1. PHP 版本和扩展 ────────────────────────────────────</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 查看版本,需 &gt;= 8.2</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -m</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -E</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql|mbstring|gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 检查必需扩展是否已加载</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 2. Composer 包管理器 ──────────────────────────────────</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">composer</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -V</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 正常输出版本号即为安装成功</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 3. 数据库连接 ────────────────────────────────────────</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># MySQL:查询数据库列表,确认项目数据库存在</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -e</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">SHOW DATABASES;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> |</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> grep</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rxthinkcmf</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 4. Node.js / pnpm ────────────────────────────────────</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">node</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 查看版本,需 22+</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">pnpm</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -v</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 正常输出版本号即为安装成功</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ─── 5. Redis 缓存(可选)────────────────────────────────</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">redis-cli</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ping</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> # 输出 PONG 表示 Redis 服务正常</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">全部通过?</p><p>如果以上命令均正常输出,说明环境搭建成功,可以进入项目启动阶段。</p></div><h3 id="一键环境检查脚本" tabindex="-1">一键环境检查脚本 <a class="header-anchor" href="#一键环境检查脚本" aria-label="Permalink to &quot;一键环境检查脚本&quot;">​</a></h3><p>将以下脚本保存为项目根目录的 <code>check_env.php</code>,运行 <code>php check_env.php</code> 即可一次性检查所有环境:</p><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">&lt;?</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;">php</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">/**</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> * check_env.php — 一键环境检查脚本</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> * 用法:php check_env.php</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> * 用途:自动检查 PHP 版本、扩展、Composer 依赖、Node.js 环境是否满足项目要求</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> */</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 1. PHP 版本检查</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// PHP_VERSION → 当前 PHP 版本号</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// version_compare() → 比较版本号是否 &gt;= 8.2.0</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== PHP 版本检查 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">PHP Version: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> PHP_VERSION</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> (</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">version_compare</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;">PHP_VERSION</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">8.2.0</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">&gt;=</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ✓</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ✗ 需要 8.2+</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 2. 必需扩展检查</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// extension_loaded() → 检查指定扩展是否已加载</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== 必需扩展检查 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">required</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pdo_mysql</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">mbstring</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">json</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">openssl</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">fileinfo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">gd</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">foreach</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">required</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> as</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">ext</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">loaded</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> extension_loaded</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">ext</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">ext</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">loaded</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✓ 已安装</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✗ 未安装</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 3. 可选扩展检查</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== 可选扩展检查 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">optional</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">redis</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">xdebug</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">opcache</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">foreach</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">optional</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> as</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">ext</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">loaded</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> extension_loaded</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">ext</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">ext</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">loaded</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✓ 已安装</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">- 未安装(可选)</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 4. Composer 依赖检查</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 读取 composer.json,检查 vendor/ 下的依赖是否已安装</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== Composer 依赖检查 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">composerJson</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> file_get_contents</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;">__DIR__</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">/composer.json</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">if</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">composerJson</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">data</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> json_decode</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">composerJson</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;"> true</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">require</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">data</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">[</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">require</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">]</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ??</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> foreach</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">require</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> as</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pkg</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">ver</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> if</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pkg</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ===</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">php</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> continue</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> // 跳过 PHP 版本要求</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">path</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;"> __DIR__</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#EE6666;--shiki-light:#B5695977;"> &#39;/</span><span style="--shiki-dark:#E7EE98;--shiki-light:#AB5E3F;">vendor</span><span style="--shiki-dark:#EE6666;--shiki-light:#B5695977;">/&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pkg</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">pkg</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">ver</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> (</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">is_dir</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">path</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✓ 已安装</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✗ 未安装(运行 composer install)</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> }</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> else</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ⚠ 未找到 composer.json</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 5. Node.js 环境检查</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// =============================================================================</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// shell_exec() → 执行系统命令并返回输出</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 2&gt;nul → 将错误输出重定向到空设备(Windows 下隐藏 &quot;命令未找到&quot; 的错误)</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== Node.js 环境检查 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">nodeVer</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> trim</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">shell_exec</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">node -v 2&gt;nul</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pnpmVer</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;"> trim</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">shell_exec</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">pnpm -v 2&gt;nul</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> node: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">nodeVer</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">nodeVer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ✓</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✗ 未安装</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> pnpm: </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ($</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pnpmVer</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> ?</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">$</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B56959;">pnpmVer</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> ✓</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> :</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">✗ 未安装(运行 npm install -g pnpm)</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> .</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">echo</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">=== 完成 ===</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;">\\n</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span></code></pre></div>`,77)])])}const y=i(l,[["render",h]]);export{g as __pageData,y as default};