<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[黑奇网-个人网站]]></title> 
<atom:link href="https://heiqw.com/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[黑奇网-个人网站]]></description>
<link>https://heiqw.com/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>cloudflare works ai白嫖token教程自定义api兼容openai</title>
    <link>https://heiqw.com/post-310.html</link>
    <description><![CDATA[<blockquote>
<p>有时候写一些小项目，可能需要调用到ai，但是可能由于业务又比较简单，不需要特别高精尖的模型的话，只是简单的自然语言识别或者说对话，基本的文本处理、图像识别等等，例如学习，需要用到token，这个时候很多地方要么收费，要么有一定的额度显示，而我们的cloudflare被网友们亲切的称为cf大善人，这个cloudflare works ai每天提供10,000 Neurons 免费额度，基本够轻量的使用了，而且没有免费时间限制，额度每天重置，这不爽歪歪？</p>
</blockquote>
<p>总共分为两个板块，第一个板块是我们需要开通获取apikey，第二个板块是我们需要利用cloud flare自带的works免费服务做中转，毕竟官方的api地址在境外的原因很慢而且有时候会丢包不稳定，所以建议自己做中转</p>
<h2>获取works ai白嫖“入场券”</h2>
<h3>第一步：注册登录cloudflare，点击下面的链接进入works ai</h3>
<p><a href="https://dash.cloudflare.com/?to=/:account/ai/workers-ai">https://dash.cloudflare.com/?to=/:account/ai/workers-ai</a></p>
<p><img src="https://image.heiqw.com/i/2026/08/07/i9boko.png" alt="" /></p>
<h3>第二步：创建使用 Workers AI REST API</h3>
<p><img src="https://image.heiqw.com/i/2026/08/07/iahhhg.png" alt="" /></p>
<p>记得这个地方的账户id，也是请求所需参数中的一部分，复制备用</p>
<p>然后点击创建Workers AI REST API令牌，选项都默认，填个名字直接创建</p>
<p><img src="https://image.heiqw.com/i/2026/08/07/ib7nok.png" alt="" /></p>
<p>点击右下角创建</p>
<p><img src="https://image.heiqw.com/i/2026/08/07/icdhqn.png" alt="" /></p>
<p>完事复制这个令牌，令牌只会显示一次，记得复制保存备用</p>
<h3>令牌在哪里管理？忘记咋办</h3>
<p><a href="https://dash.cloudflare.com/profile/api-tokens">https://dash.cloudflare.com/profile/api-tokens</a></p>
<p>忘记了可以返回去重建，旧的令牌可以在这里删除，<br />
<img src="https://image.heiqw.com/i/2026/08/07/ido85i.png" alt="" /></p>
<h2>建立works中转站，方便后续加速访问</h2>
<p>前面说到了clooudflare是国外的服务商，直接访问它的api很慢而且会丢包不稳定，这个时候可以用到它本身就免费的works搭配他的全球加速服务cdn，自己做一个中转站</p>
<p><code>这里必须要自己有域名，且需要懂cloudflare绑定自己域名教程</code></p>
<ul>
<li>10年xyz域名教程</li>
</ul>
<p><a href="https://www.bing.com/search?q=10%E5%B9%B4xyz%E5%9F%9F%E5%90%8D%E6%95%99%E7%A8%8B">https://www.bing.com/search?q=10%E5%B9%B4xyz%E5%9F%9F%E5%90%8D%E6%95%99%E7%A8%8B</a></p>
<ul>
<li>clooudflare域名绑定教程</li>
</ul>
<p><a href="https://www.bing.com/search?q=cloudflare%E5%9F%9F%E5%90%8D%E7%BB%91%E5%AE%9A%E8%A7%A3%E6%9E%90%E6%95%99%E7%A8%8B">https://www.bing.com/search?q=cloudflare%E5%9F%9F%E5%90%8D%E7%BB%91%E5%AE%9A%E8%A7%A3%E6%9E%90%E6%95%99%E7%A8%8B</a></p>
<blockquote>
<p>我这里就不赘述域名注册和绑定了，这个是基础知识呢，还是不会的话善用搜索吧，这里提供思路，10年xyz教程可以不用注册10年，平均下列一年5元多也挺好了</p>
</blockquote>
<h3>创建works用于api中转</h3>
<p><a href="https://dash.cloudflare.com/?to=/:account/workers-and-pages">https://dash.cloudflare.com/?to=/:account/workers-and-pages</a></p>
<p><img src="https://image.heiqw.com/i/2026/08/07/igjfwi.png" alt="" /></p>
<p>选择从hello world开始</p>
<p><img src="https://image.heiqw.com/i/2026/08/07/ij40ph.png" alt="" /></p>
<p>创建好后，编辑代码，填如下代码</p>
<pre><code>export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    // 替换域名为OpenAI的API地址
    url.hostname = 'api.cloudflare.com';
    // 创建新的请求
    const newRequest = new Request(url, {
      method: request.method,
      headers: request.headers,
      body: request.body
    });
    // 转发请求并返回响应
    const response = await fetch(newRequest);
    // 处理CORS跨域问题
    const newResponse = new Response(response.body, response);
    newResponse.headers.set('Access-Control-Allow-Origin', '*');
    newResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    newResponse.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    return newResponse;
  }
};</code></pre>
<p><img src="https://image.heiqw.com/i/2026/08/07/ikmyd6.jpg" alt="" /></p>
<p><code>粘贴代码，直接部署</code></p>
<p><img src="https://image.heiqw.com/i/2026/08/07/ile723.png" alt="" /></p>
<p>最后绑定一个个人域名，就完成了自己的api中转站了</p>
<h2>openai格式api使用</h2>
<h3>工具调用</h3>
<p><img src="https://image.heiqw.com/i/2026/08/07/inuv0m.png" alt="" /></p>
<p>请求api：<a href="https://[你刚刚绑定的域]/client/v4/accounts/{账户id}/ai/v1/chat/completions">https://[你刚刚绑定的域]/client/v4/accounts/{账户id}/ai/v1/chat/completions</a><br />
参数apikey：刚刚创建RESET api得到的api key<br />
模型名称：@cf/zai-org/glm-4.7-flash</p>
<p>模型名称只是举例子，很多模型可用</p>
<blockquote>
<p>这种情况最简单，就是刚刚前面获取到的参数组合一下就得到api了</p>
</blockquote>
<h3>代码调用</h3>
<p>还是和前面一样，配置好就行啦，既然都代码调用了，那肯定是老手了，参数都会自己找啦，这里就不多说了</p>
<pre><code>import requests

# ========== 配置区，自行修改 ==========
BASE_DOMAIN = "填入你绑定的域名"
ACCOUNT_ID = "填入你的账户ID"
API_KEY = "RESET生成的Cloudflare API Key"
MODEL = "@cf/zai-org/glm-4.7-flash"
# ======================================

url = f"https://{BASE_DOMAIN}/client/v4/accounts/{ACCOUNT_ID}/ai/v1/chat/completions"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

payload = {
    "model": MODEL,
    "messages": [
        {"role": "system", "content": "你是智能助手，使用中文回答。"},
        {"role": "user", "content": "简单介绍下Cloudflare Workers AI"}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
}

def chat_request():
    resp = requests.post(url, headers=headers, json=payload)
    res = resp.json()
    if "choices" in res:
        print("AI回复：")
        print(res["choices"][0]["message"]["content"])
    else:
        print("请求失败：")
        print(res)

if __name__ == "__main__":
    chat_request()</code></pre>
<h2>模型列表</h2>
<p><a href="https://developers.cloudflare.com/workers-ai/models/">https://developers.cloudflare.com/workers-ai/models/</a></p>
<p>自己在列表可以查找模型，找些自己喜欢的合适的，复制id替换就行，如果提示下面这种就是收费，没有提示的就是免费，直接找没提示的啦</p>
<p><img src="https://image.heiqw.com/i/2026/08/07/iri0bv.png" alt="" /></p>]]></description>
    <pubDate>Fri, 07 Aug 2026 10:49:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-310.html</guid>
</item>
<item>
    <title>linux服务器关闭日志教程关闭var中的auditd审计日志</title>
    <link>https://heiqw.com/post-309.html</link>
    <description><![CDATA[<blockquote>
<p>服务器总是动不动磁盘占用满，总是需要维护，有一部分原因是因为centos这种像linux服务器自动开了日志功能，而日志对于我们普通用户来说大多时候用不到，且很麻烦，那么出于利大于弊的角度考虑，可以关闭</p>
</blockquote>
<p>当然，这只是一种造成服务器磁盘占用过大的情况，具体问题具体分析，服务器还是需要经常维护的</p>
<h2>系统日志永久关闭教程</h2>
<p><img src="https://image.heiqw.com/i/2026/08/06/vx6nux.png" alt="" /><br />
<img src="https://image.heiqw.com/i/2026/08/06/vx4srq.png" alt="" /></p>
<h2>先说结论</h2>
<p><strong>可以关闭，很多自建业务服务器默认关掉auditd；但有取舍，我分两种方案给你选择：【优化日志（推荐）】 vs 【直接永久关闭】</strong></p>
<blockquote>
<p>auditd = Linux内核审计，日志存 <code>/var/log/audit/audit.log</code><br />
作用：记录文件修改、命令执行、系统调用，<strong>入侵排查溯源用</strong>；普通业务服务器长期没安全事件，看起来“没用”。</p>
</blockquote>
<h1>方案一：不关闭服务，限制日志大小（优先推荐，保留审计能力，杜绝磁盘爆满）</h1>
<p>不用关停，修改配置自动轮转、限制文件数量，不用手动清理日志</p>
<pre><code class="language-bash">vi /etc/audit/auditd.conf</code></pre>
<p>修改下面参数：</p>
<pre><code class="language-ini">max_log_file = 20          # 单个日志最大20MB
num_logs = 3               # 最多保留3个轮转文件
max_log_file_action = ROTATE
space_left_action = SUSPEND
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND</code></pre>
<p>重载生效：</p>
<pre><code class="language-bash">systemctl restart auditd
# 清理旧大容量日志
rm -rf /var/log/audit/*</code></pre>
<h1>方案二：永久关闭 auditd（适合你现在的需求）</h1>
<p>⚠️风险提醒：服务器一旦被入侵、文件被篡改，<strong>没有审计日志用来追溯操作记录</strong>；<br />
如果不涉及等保、合规检测，可以放心关闭。</p>
<pre><code class="language-bash"># 立即停止 + 禁止开机自启（一条命令搞定）
systemctl disable auditd --now

# 验证状态，显示 disabled 成功
systemctl is-enabled auditd

# 清理积压audit日志释放空间
rm -rf /var/log/audit/*</code></pre>
<h3>补充关键点</h3>
<ol>
<li>CentOS7 最小化安装<strong>部分版本默认auditd就是关闭</strong>，所以你看到有些服务器没有这些日志；</li>
<li>关闭auditd<strong>不会影响网站、数据库、业务程序正常运行</strong>；</li>
<li>如果你服务器是云上生产、需要安全审计/过等保：<strong>绝对不要关，选方案一限制日志</strong>；</li>
<li>如果你是自用业务、测试服务器、内网程序服务器：直接关闭完全没问题。</li>
</ol>
<h2>快速建议</h2>
<p>自用业务服务器、不需要安全溯源 → 直接执行关闭命令；<br />
正式对外生产服务器 → 只限制日志大小，不要关停。</p>
<h2>永久关闭后续</h2>
<h1>先说你当前这条命令结果解读</h1>
<pre><code class="language-bash">systemctl disable auditd --now</code></pre>
<p>✅ <strong>disable 成功：开机不会自启（显示 disabled）</strong><br />
❌ <strong>--now 实时停止失败</strong><br />
原因：CentOS7 的 <code>auditd.service</code> 内置参数 <code>RefuseManualStop=yes</code>，系统原生禁止 <code>systemctl stop</code> 手动关停，不是你操作错误。</p>
<blockquote>
<p>现状：<strong>当前auditd进程还在跑，依旧持续写 <code>/var/log/audit/audit.log</code>；重启服务器后auditd不会自动拉起。</strong></p>
</blockquote>
<h2>方案分两档（按需选择）</h2>
<h2>方案A（最简单，不用重启内核，临时抑制日志，推荐自用服务器）</h2>
<p>先关闭内核审计接收，立刻停止产生新audit日志：</p>
<pre><code class="language-bash"># 临时关闭内核审计（立即生效，重启失效）
auditctl -e 0</code></pre>
<p>清理旧日志：</p>
<pre><code class="language-bash">rm -rf /var/log/audit/*</code></pre>
<p>⚠️短板：服务器重启后 <code>auditctl -e 0</code> 失效，audit又开始生成日志。</p>
<h2>方案B（永久彻底关闭，一劳永逸，根治日志狂打）</h2>
<p>原理：内核启动参数 <code>audit=0</code>，直接禁用内核审计子系统，不会产生任何audit消息。</p>
<ol>
<li>编辑grub
<pre><code class="language-bash">vi /etc/default/grub</code></pre>
<p>找到 <code>GRUB_CMDLINE_LINUX</code>，末尾增加 <strong>audit=0</strong><br />
示例：</p>
<pre><code class="language-ini">GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet audit=0"</code></pre></li>
<li>生成新引导配置（CentOS7标准命令）
<pre><code class="language-bash">grub2-mkconfig -o /boot/grub2/grub.cfg</code></pre></li>
<li><strong>重启服务器生效</strong>
<pre><code class="language-bash">reboot</code></pre></li>
</ol>
<p>重启验证：</p>
<pre><code class="language-bash"># 查看内核参数是否加载成功
cat /proc/cmdline | grep audit=0
# 查看审计状态，会提示不支持审计
auditctl -s
# 查看进程，不存在auditd、kauditd持续写日志
ps -ef | grep audit</code></pre>
<h2>备选折中方案（不想彻底关闭，限制日志大小，不用改grub、不用重启）</h2>
<p>如果你以后有可能需要安全审计，不建议彻底关掉，只做日志轮转限制：</p>
<pre><code class="language-bash">vi /etc/audit/auditd.conf</code></pre>
<p>修改：</p>
<pre><code>max_log_file = 15
num_logs = 2
max_log_file_action = ROTATE
disk_full_action = SUSPEND</code></pre>
<p>重启auditd（使用service命令绕过systemctl限制）</p>
<pre><code class="language-bash">service auditd restart</code></pre>
<h1>重要提醒</h1>
<ol>
<li>关闭audit不影响网站、数据库、业务程序运行；</li>
<li><strong>不要使用 kill -9 强杀auditd</strong>，容易引发内核队列阻塞、系统卡顿；</li>
<li>等保、政企合规服务器<strong>禁止关闭audit</strong>；个人/业务自用机随意。</li>
</ol>
<h2>给你最简建议</h2>
<p>只是嫌日志一直占磁盘 → <strong>方案B，grub添加audit=0重启，永久干净。</strong><br />
暂时不想重启机器 → 先用 <code>auditctl -e 0</code> 临时止住日志输出。</p>]]></description>
    <pubDate>Thu, 06 Aug 2026 19:29:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-309.html</guid>
</item>
<item>
    <title>记录docker备份迁移教程</title>
    <link>https://heiqw.com/post-308.html</link>
    <description><![CDATA[<h1>Docker容器 picfast-app-1 备份+完整迁移方案</h1>
<p>两种常用方式：<strong>方式1：容器打包成镜像（简单，适合快速迁移）</strong>；生产推荐优先结合「数据卷单独备份」，避免数据丢失。</p>
<blockquote>
<p>以容器名：<code>picfast-app-1</code>为例</p>
</blockquote>
<h2>前置区分概念</h2>
<ol>
<li><code>docker commit</code>：把正在运行/停止的容器<strong>制作成新镜像</strong>（推荐）</li>
<li><code>docker export / import</code>：导出容器文件系统快照（不带镜像历史）</li>
<li>⚠️ 重要：<strong>挂载的volume数据不会被打包进镜像！必须单独备份卷！</strong></li>
</ol>
<h2>方式一：commit打包容器为镜像（首选）</h2>
<h3>1. 将容器提交为本地镜像</h3>
<pre><code class="language-bash">docker commit picfast-app-1 picfast-app-backup:v1</code></pre>
<ul>
<li><code>picfast-app-backup:v1</code> 自定义镜像名与标签</li>
</ul>
<h3>2. 将镜像保存为tar文件（用于拷贝到新服务器）</h3>
<pre><code class="language-bash">docker save -o picfast-app-backup-v1.tar picfast-app-backup:v1</code></pre>
<blockquote>
<p>如果是宝塔的docker也可以直接再docker镜像管理里面导出到自选目录，然后下载</p>
</blockquote>
<h3>3. 迁移到目标机器</h3>
<p>如果是宝塔，那么可以分享到对应机器，然后下载到新机器，解压以后，再当前目录下运行终端</p>
<p>下面是文件名，根据自己的修改</p>
<p>把 <code>picfast-app-backup-v1.tar</code> 文件传到新服务器，执行载入镜像：</p>
<pre><code class="language-bash">docker load -i picfast-app-backup-v1.tar</code></pre>
<h3>4. 在新服务器启动容器</h3>
<blockquote>
<p>⚠️ 务必回忆原来的启动参数（端口、挂载目录、环境变量）<br />
示例参考（根据你实际配置修改）</p>
<pre><code class="language-bash">docker run -d \
--name picfast-app-1 \
-p 你原来的端口映射 \
-v 数据目录挂载（关键！）\
picfast-app-backup:v1</code></pre>
<p>如果你忘记启动命令，可以在原机器查询：</p>
<pre><code class="language-bash">docker inspect picfast-app-1 | grep -A20 "HostConfig"</code></pre>
</blockquote>
<hr />
<h2>启动命令查找</h2>
<h3>优先用上面一条命令查询</h3>
<p>查出来以后，直接贴给豆包等ai让它帮你写启动命令即可，有问题也发日志过去让ai分析报错再修改</p>
<p>查看容器完整启动配置：</p>
<pre><code class="language-bash"># 安装工具（可选）
yum install -y jq  # centos
# or apt install jq # ubuntu

docker inspect picfast-app-1 | jq '.[0].Config.Env, .[0].HostConfig.PortBindings, .[0].Mounts'</code></pre>
<p>如果你把下面这条命令输出结果发我，我可以直接帮你生成新服务器一键启动命令：</p>
<pre><code class="language-bash">docker inspect picfast-app-1</code></pre>]]></description>
    <pubDate>Thu, 06 Aug 2026 19:10:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-308.html</guid>
</item>
<item>
    <title>记录一次电脑开机蓝屏无法启动解决办法代码0xc0000001修复引导</title>
    <link>https://heiqw.com/post-307.html</link>
    <description><![CDATA[<blockquote>
<p>记录一次电脑开机蓝屏无法启动解决办法代码</p>
</blockquote>
<h2>问题描述</h2>
<p>开机直接显示无法正常启动你的电脑，代码0xc0000001，安全模式什么的都进不去，甚至报错Autochk program not found</p>
<p><img src="https://image.heiqw.com/i/2026/07/16/pe8jh9.png" alt="" /></p>
<h2>故障解决</h2>
<ul>
<li>1、这个情况是由于磁盘分区是mbr格式的，容易掉引导，用微pe进去修复下引导就好了，mbr分区格式对应启动方式legacy</li>
</ul>]]></description>
    <pubDate>Thu, 16 Jul 2026 15:35:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-307.html</guid>
</item>
<item>
    <title>修改浏览器缓存目录到内存条虚拟硬盘加快读写访问速度延长磁盘寿命</title>
    <link>https://heiqw.com/post-306.html</link>
    <description><![CDATA[<blockquote>
<p>Primo Ramdisk首先用到这个软件，这个软件可以虚拟内存条的容量作为一个磁盘，然后再通过修改浏览器缓存目录、映射硬链接的形式，强制把一些缓存数据，需要读写快但毫不重要的一些需要反复读写的临时数据存在那里共软件随时快速读写，这样一来不仅能大大加快网页打开速度，又能减少这部分缓存对硬盘读写造成的寿命损坏（虽然说这个伤害微乎其微，但是我内存都高低32G了也得替硬盘抗一点伤害吧？因为我内存条又用不完，硬盘写入量每天就浏览器和微信两个多，一天20G，这样下来内存条抗一些伤害也好啊！何乐而不为对吧！）</p>
</blockquote>
<h2>注意</h2>
<p>1、这个做法不适合内存小于16g的用户，因为本身小于16g都不太够用了，你额外拿内存容量来做缓存也不太好吧？除非你本身打开的软件不多，内存完全充足的情况下可以，再一个是后续软件开启<code>动态内存管理</code>这样就相当于用多少就占多少内存，而不是你设置多大那部分内存就不能用</p>
<p>2、绝对不适合重要数据，仅限于可有可无的缓存类型数据，因为内存条的结构本身就是断电后数据丢失，所以写在内存里要承担随时可能丢失数据的风险。但是像浏览器这种缓存数据就无所谓，因为本来就是高频访问而且是从云端下发临时存在本地的，没了大不了刷新一下就又有了</p>
<h2>简单的说下</h2>
<h2>第一步</h2>
<p>下载软件，Primo Ramdisk</p>
<p>老规矩，网上找，吾爱论坛</p>
<h2>第二步</h2>
<p>直接新建一个虚拟硬盘</p>
<p><img src="https://image.heiqw.com/i/2026/07/06/xhan91.png" alt="" /></p>
<p>硬盘类型选第二个据说快些，镜像的话就是相当于硬盘也保存一份，因为我本身就不想把缓存放硬盘，所以不打勾</p>
<p><img src="https://image.heiqw.com/i/2026/07/06/xhya7j.png" alt="" /></p>
<p>这些默认就行</p>
<p><img src="https://image.heiqw.com/i/2026/07/06/xib4vk.png" alt="" /></p>
<p>高级里面你记得放一些你要弄到的，选自动创建文件夹，因为前面说了内存断电数据就清空，所以整个虚拟盘都会清空，但是某些软件不会自己建目录，所以我们自动建为好</p>
<h2>第三步 改缓存目录到虚拟盘</h2>
<p><img src="https://image.heiqw.com/i/2026/07/06/xjlulz.png" alt="" /></p>
<p>不同浏览器设置不同，我这里是360极速浏览器，直接设置里搜索就行，然后修改，到这一步就差不多完了</p>
<h3>进阶玩法</h3>
<ul>
<li>
<p>1、我发现除了这个可以设置的缓存，360还有一些gpu显卡缓存，脚本缓存等等，其他的上面设置了也不会挪过去，这怎么办？这个就要自己创建硬链接的形式，强制指定存储目录到我们的虚拟内存盘了，它不会自动建，所以二级目录要用脚本建一下，如果你只弄缓存的话，忽略这一步</p>
</li>
<li>
<p>2、上面说的其他缓存，因为软件里没有设置的地方，也不会自己创建目录，所以我们每次开启设置启动脚本，开机自动建二级目录+硬链接，比如我用的360极速浏览器，我把缓存目录改到了虚拟盘，缓存目录倒是会自动创建其他不自动建的就用这个解决问题</p>
</li>
</ul>
<pre><code class="language-bat">@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&amp;&amp;exit
cd /d "%~dp0"

:: 一级目录（Primo已自动生成，重复md不会报错）
md "Z:\360ChromeX"

:: 浏览器缓存子文件夹
md "Z:\360ChromeX\GPUCache64"
md "Z:\360ChromeX\Code Cache"
md "Z:\360ChromeX\DawnCache"
md "Z:\360ChromeX\Service Worker"

mklink /J "D:\public\360ChromeX\Chrome\User Data\Default\GPUCache64" "Z:\360ChromeX\GPUCache64"
mklink /J "D:\public\360ChromeX\Chrome\User Data\Default\Code Cache" "Z:\360ChromeX\Code Cache"
mklink /J "D:\public\360ChromeX\Chrome\User Data\Default\DawnCache" "Z:\360ChromeX\DawnCache"
mklink /J "D:\public\360ChromeX\Chrome\User Data\Default\Service Worker" "Z:\360ChromeX\Service Worker"

echo Z盘所有目录初始化完成
timeout /t 2 /nobreak &gt;nul
exit</code></pre>
<h3>设置开机自动以管理员运行（任务计划程序，最稳）</h3>
<ul>
<li>Win+S 搜索「任务计划程序」打开</li>
<li>右侧【创建任务】<br />
常规：名称内存盘自动创建目录，勾选使用最高权限运行<br />
触发器：新建 → 登录时<br />
操作：新建 → 程序或脚本，选择刚才的C:\AutoRamDiskInit.bat</li>
<li>保存，开机登录后自动执行，瞬间补齐所有子文件夹</li>
</ul>
<p>注意：补充关键前置设置（解决快速启动导致缓存残留）<br />
你不要镜像、要关机彻底清空内存盘，<code>必须关闭 Windows 快速启动</code>：</p>
<p>关闭Windows快速启动</p>
<ul>
<li>Primo Ramdisk 主界面 → 选项</li>
<li>Windows 快速启动点【关闭】</li>
</ul>
<p>重启生效</p>
<p>快速启动会休眠内存盘数据，即使不开镜像，关机也不会清空 Temp 缓存，违背重启后清理的需求。</p>
<h3>注意脚本要根据自己的需求改路径，不同浏览器文件夹略有不同，找到修改即可，如果你不是很懂，那么只弄基础玩法浏览器设置里修改缓存路径就好了，不需要进阶脚本</h3>
<p><img src="https://image.heiqw.com/i/2026/07/06/xq1sgi.png" alt="" /></p>]]></description>
    <pubDate>Mon, 06 Jul 2026 20:11:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-306.html</guid>
</item>
<item>
    <title>2026年新版宝塔面板一键跳过登录/绕过绑定/假绑定/免登录/去除验证登录绑定</title>
    <link>https://heiqw.com/post-305.html</link>
    <description><![CDATA[<blockquote>
<p>宝塔BT Panel的强制绑定账号无法绕过的彻底解决</p>
</blockquote>
<h2>源于宝塔官方免登录版本</h2>
<h2>说明</h2>
<p>对不起，我是标题党了，这个教程是你想要的，但确实不是什么绕过绑定，去除绑定等等，也不是老版本7.7.0之类的绕过绑定，毕竟7.7.0确实太老了，而是我今天偶然发现，宝塔面板自己也推出了一个免绑定的</p>
<p><img src="https://image.heiqw.com/i/2026/07/05/iylm8b.png" alt="" /></p>
<h3>稳定版：10.0.2</h3>
<p>（ 纯净版，简洁免绑定账号，无付费广告 ）<br />
推荐公司、企事业单位及生产环境使用，特别注重安全和稳定性，只修BUG，不加新功能</p>
<p><code>通用安装脚本（推荐）</code></p>
<pre><code class="language-bash">url=https://download.bt.cn/install/installStable.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O installStable.sh $url;fi;bash installStable.sh ed8484bec</code></pre>
<p><code>Centos/OpenCloud/Alibaba</code></p>
<pre><code class="language-bash">url=https://download.bt.cn/install/installStable.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O installStable.sh $url;fi;bash installStable.sh ed8484bec</code></pre>
<p><code>Debian</code></p>
<pre><code>wget -O install.sh https://download.bt.cn/install/installStable.sh &amp;&amp; bash install.sh ed8484bec</code></pre>
<p><code>Ubuntu/Deepin</code></p>
<pre><code>wget -O install.sh https://download.bt.cn/install/installStable.sh &amp;&amp; sudo bash install.sh ed8484bec</code></pre>
<p>我也是直接在官方看到的，终于算是良心发现了，非得登录干嘛对吧？毕竟宝塔开始源于一定的极客精神，既然极客精神了我觉得大可给更多的选择，不一定非得用户注册登录，因为有的人建了网站放那里真的很少用到，这点宝塔官方还是值得称赞的，终于可以听听用户的声音了，直到今天我用宝塔也算快有10年了吧，2016还是2017就开始用了，期间也推荐了给很多人</p>]]></description>
    <pubDate>Sun, 05 Jul 2026 11:43:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-305.html</guid>
</item>
<item>
    <title>推荐一个如何查手机内存是否虚标/硬盘虚标山寨机查询打假app</title>
    <link>https://heiqw.com/post-304.html</link>
    <description><![CDATA[<p><a href="https://epcdiy.org/">https://epcdiy.org/</a></p>
<blockquote>
<p>白眼app</p>
</blockquote>
<p>简洁、高效、实用、轻量</p>
<p>一款使用C++编写的山寨机跑分、甄别工具</p>
<h2>功能</h2>
<p>白眼APP有什么功能？<br />
CPU跑分：可以为你的CPU进行跑个分，并且通过他人的跑分数据让您了解您的手机的大致性能。</p>
<p>内存测试：通过暴力填充系统运行内存的方式来判别真正运行内存。</p>
<p>磁盘测试：通过填充磁盘的方式测试手机真实储存空间。</p>
<p>在线排行榜：您的跑分数据将会被上传到软件数据库中，与他人共享。您也可以通过查看您在排行榜中的位置来了解您的手机的大致性能</p>]]></description>
    <pubDate>Sat, 04 Jul 2026 15:39:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-304.html</guid>
</item>
<item>
    <title>php读取数据库列表以及操作数据库修改密码/忘记后台密码</title>
    <link>https://heiqw.com/post-303.html</link>
    <description><![CDATA[<blockquote>
<p>php读取数据库列表以及操作数据库修改密码，用来有ftp以及有文件权限时，但是缺不知道后台密码，或者忘记后台密码，后台密码被重置的情况了</p>
</blockquote>
<p>还可以用在比如说有的空间有防火墙，直接把phpmyadmin或者adminer之类的传上去会被拦截的情况，像昨天晚上我就遇到一例，一个人的后台密码被黑了被改了，弱口令，但是又临时需要急着传图片，无奈我只能手搓一个php先把后台密码改了，再回去后台传</p>
<h2>注意事项</h2>
<p>1、不一定能用，因为后续让ai重写的，我开始还没整合成一个php，但是应该没问题的，逻辑是这么个逻辑<br />
2、下列直接修改的仅适用于普通的md5密码存储，如果是特定的源码不是直接md5密码加密的，还需要改成对应的算法密文储存的数据才行哦</p>
<h2>简易数据库管理小工具（PHP5.3+ 兼容，极简代码）</h2>
<p>采用原生PDO（PHP5.3默认自带），无框架、无第三方类库，结构极简，三个功能：</p>
<ol>
<li>连接数据库，展示所有数据表</li>
<li>点击表名查看该表全部数据</li>
<li>根据ID编辑任意字段值保存</li>
</ol>
<h2>db_manager.php 完整单文件代码</h2>
<pre><code class="language-php">&lt;?php
// ==========数据库配置（自行修改）==========
$db_host = 'localhost';
$db_user = 'root';
$db_pwd  = 'root';
$db_name = 'testdb';
$charset = 'utf8';

// PDO连接数据库（PHP5.3兼容写法）
try {
    $dsn = "mysql:host=$db_host;dbname=$db_name;charset=$charset";
    $pdo = new PDO($dsn, $db_user, $db_pwd);
    $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("数据库连接失败：".$e-&gt;getMessage());
}

// 获取当前操作
$action = isset($_GET['act']) ? $_GET['act'] : 'tables';
$table  = isset($_GET['table']) ? $_GET['table'] : '';
$id     = isset($_GET['id']) ? intval($_GET['id']) : 0;

// 1、展示所有数据表
if($action == 'tables'){
    $stmt = $pdo-&gt;query("SHOW TABLES");
    $tables = $stmt-&gt;fetchAll(PDO::FETCH_NUM);
    echo '&lt;h3&gt;数据库 '.$db_name.' 所有数据表&lt;/h3&gt;';
    echo '&lt;ul&gt;';
    foreach($tables as $t){
        $tb = $t[0];
        echo "&lt;li&gt;&lt;a href='?act=show&amp;table=$tb'&gt;$tb&lt;/a&gt;&lt;/li&gt;";
    }
    echo '&lt;/ul&gt;';
}

// 2、查看指定表数据列表
elseif($action == 'show' &amp;&amp; !empty($table)){
    echo "&lt;p&gt;&lt;a href='?'&gt;返回表列表&lt;/a&gt;&lt;/p&gt;";
    echo "&lt;h3&gt;数据表：$table&lt;/h3&gt;";

    // 查询表字段
    $fieldStmt = $pdo-&gt;query("DESC `$table`");
    $fields = $fieldStmt-&gt;fetchAll(PDO::FETCH_ASSOC);

    // 查询表数据
    $dataStmt = $pdo-&gt;query("SELECT * FROM `$table`");
    $rows = $dataStmt-&gt;fetchAll(PDO::FETCH_ASSOC);

    if(empty($rows)){
        echo '&lt;p&gt;该表暂无数据&lt;/p&gt;';
    }else{
        // 输出表头
        echo '&lt;table border="1" cellpadding="4"&gt;';
        echo '&lt;tr&gt;';
        foreach($fields as $f){
            echo '&lt;th&gt;'.$f['Field'].'&lt;/th&gt;';
        }
        echo '&lt;th&gt;操作&lt;/th&gt;&lt;/tr&gt;';

        // 输出数据行
        foreach($rows as $row){
            echo '&lt;tr&gt;';
            foreach($row as $k=&gt;$v){
                echo '&lt;td&gt;'.htmlspecialchars($v).'&lt;/td&gt;';
            }
            // 取第一个字段当做主键ID（常规自增id）
            $pk = $fields[0]['Field'];
            $pkVal = $row[$pk];
            echo "&lt;td&gt;&lt;a href='?act=edit&amp;table=$table&amp;id=$pkVal'&gt;编辑&lt;/a&gt;&lt;/td&gt;";
            echo '&lt;/tr&gt;';
        }
        echo '&lt;/table&gt;';
    }
}

// 3、编辑单条数据表单
elseif($action == 'edit' &amp;&amp; !empty($table) &amp;&amp; $id&gt;0){
    echo "&lt;p&gt;&lt;a href='?act=show&amp;table=$table'&gt;返回表数据&lt;/a&gt;&lt;/p&gt;";
    echo "&lt;h3&gt;编辑ID=$id 的数据&lt;/h3&gt;";

    // 获取表字段
    $fieldStmt = $pdo-&gt;query("DESC `$table`");
    $fields = $fieldStmt-&gt;fetchAll(PDO::FETCH_ASSOC);
    $pk = $fields[0]['Field'];

    // 查询本条数据
    $rowStmt = $pdo-&gt;prepare("SELECT * FROM `$table` WHERE `$pk`=?");
    $rowStmt-&gt;execute([$id]);
    $row = $rowStmt-&gt;fetch(PDO::FETCH_ASSOC);
    if(!$row) die('数据不存在');

    // 提交保存修改
    if($_POST){
        $setArr = [];
        $param = [];
        foreach($fields as $f){
            $fname = $f['Field'];
            if($fname == $pk) continue; // 主键不允许修改
            $val = isset($_POST[$fname]) ? $_POST[$fname] : '';
            $setArr[] = "`$fname`=?";
            $param[] = $val;
        }
        $param[] = $id;
        $sql = "UPDATE `$table` SET ".implode(',',$setArr)." WHERE `$pk`=?";
        $updateStmt = $pdo-&gt;prepare($sql);
        $updateStmt-&gt;execute($param);
        echo '&lt;p style="color:green;"&gt;修改成功！&lt;a href="?act=show&amp;table='.$table.'"&gt;点击返回数据列表&lt;/a&gt;&lt;/p&gt;';
    }

    // 输出编辑表单
    echo '&lt;form method="post"&gt;';
    foreach($fields as $f){
        $fname = $f['Field'];
        $val = htmlspecialchars($row[$fname]);
        if($fname == $pk){
            echo "&lt;p&gt;$fname：$val (主键不可修改)&lt;/p&gt;";
        }else{
            echo "&lt;p&gt;$fname：&lt;input type='text' name='$fname' value='$val' style='width:350px;'&gt;&lt;/p&gt;";
        }
    }
    echo '&lt;p&gt;&lt;button type="submit"&gt;保存修改&lt;/button&gt;&lt;/p&gt;';
    echo '&lt;/form&gt;';
}
?&gt;</code></pre>
<h2>使用说明</h2>
<ol>
<li>修改代码顶部<strong>数据库配置项</strong>：主机、用户名、密码、数据库名</li>
<li>直接放到PHP5.3及以上环境运行（PHP5.3默认开启PDO-MySQL）</li>
<li>流程：
<ul>
<li>首页：列出当前库所有数据表</li>
<li>点表名：查看该表全部数据</li>
<li>每行右侧点【编辑】：打开表单修改除主键ID外所有字段，提交保存</li>
</ul></li>
</ol>
<h2>兼容性说明</h2>
<ol>
<li>PHP5.3 原生支持 PDO，无需额外安装扩展</li>
<li>使用<code>htmlspecialchars</code>防XSS简单安全处理</li>
<li>使用预处理语句防SQL注入</li>
<li>自动把表第一个字段作为主键（一般为id自增主键），主键禁止修改</li>
<li>单文件极简实现，无样式冗余代码，可自行加CSS美化</li>
</ol>
<h2>简易安全提醒</h2>
<p>本代码仅用于本地内网测试，不要直接部署到公网，没有做访问权限验证，公网使用需要加登录验证。</p>
<p>需要我给代码加一段极简CSS美化表格页面吗？</p>]]></description>
    <pubDate>Thu, 25 Jun 2026 17:08:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-303.html</guid>
</item>
<item>
    <title>pbootcms留言验证码加固/刷新解决不过期/删除会话验证码</title>
    <link>https://heiqw.com/post-302.html</link>
    <description><![CDATA[<blockquote>
<p>pbootcms程序有很大的安全问题，比如说系统自带的验证码很长时间不会过期，这样虽然哪怕有了验证码一样的会被刷留言啊，根本无法防护，所以直接在后台加一行代码即可解决，这样验证码就会过期了只能用一次，直接删除会话里的验证码</p>
</blockquote>
<p><img src="https://image.heiqw.com/i/2026/06/24/imk0db.png" alt="" /></p>
<p>打开<code>/apps/home/controller</code>找到<code>MessageController.php</code>大约56行左右，直接加一行下面的代码即可</p>
<pre><code>// 关键：校验通过立刻销毁验证码，一次性使用，防止XHR重放
unset($_SESSION['checkcode']);</code></pre>]]></description>
    <pubDate>Wed, 24 Jun 2026 11:22:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-302.html</guid>
</item>
<item>
    <title>pbootcms后台登录错误缓存清理自动执行代码</title>
    <link>https://heiqw.com/post-301.html</link>
    <description><![CDATA[<p>我给你写<strong>极简、安全、可直接运行</strong>的代码，分两个文件：</p>
<ol>
<li>前端：jQuery AJAX 请求代码（HTML/JS）</li>
<li>后端：原生PHP接口（无框架、防路径遍历/文件漏洞、无数据库所以无需防SQL注入）</li>
<li>逻辑严格按你要求：检查<code>runtime</code>目录创建时间 → 非当天删除 → 全流程返回JSON</li>
</ol>
<hr />
<h2>一、前端 jQuery 代码 (index.html)</h2>
<p><strong>功能</strong>：页面加载自动发送请求，接收PHP返回的JSON结果并提示</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="zh-CN&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;检查Runtime目录&lt;/title&gt;
    &lt;!-- 引入jQuery CDN --&gt;
    &lt;script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="result"&gt;&lt;/div&gt;

    &lt;script&gt;
        // 页面加载完成后，发送AJAX请求到PHP接口
        $(function () {
            $.ajax({
                url: "check_runtime.php", // PHP接口地址
                type: "POST",
                dataType: "json", // 强制接收JSON
                // 无传递参数，杜绝注入风险
                success: function (res) {
                    // 处理返回结果
                    console.log(res);
                    $("#result").html(`&lt;p&gt;${res.msg}&lt;/p&gt;`);
                    alert(res.msg);
                },
                error: function () {
                    alert("请求失败，请检查接口是否正常");
                }
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<hr />
<h2>二、后端 原生PHP接口 (check_runtime.php)</h2>
<p><strong>核心安全</strong>：</p>
<ul>
<li>禁止目录遍历（防文件漏洞）</li>
<li>递归删除目录（支持runtime内有子文件/子目录）</li>
<li>严格判断创建时间</li>
<li>统一JSON响应格式</li>
<li>无数据库操作 → 天然无SQL注入风险</li>
</ul>
<pre><code class="language-php">&lt;?php
// 强制返回JSON格式，防止乱码
header('Content-Type: application/json; charset=utf-8');
// 禁止缓存
header('Cache-Control: no-cache, no-store, must-revalidate');

// ===================== 配置 =====================
// 目标目录：当前目录下的 runtime
$targetDir = __DIR__ . '/runtime';
// 今天的日期（年月日）
$today = date('Y-m-d');

// ===================== 安全检查 =====================
// 防止路径遍历攻击，仅允许操作当前目录的runtime
if (strpos(realpath($targetDir), realpath(__DIR__)) !== 0) {
    echo json_encode([
        'code' =&gt; 1,
        'msg' =&gt; '非法目录操作，已拦截'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// ===================== 核心逻辑 =====================
// 1. 判断目录是否存在
if (!is_dir($targetDir)) {
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录不存在，无需处理'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 2. 获取目录创建时间（Windows：创建时间；Linux：inode修改时间，通用标准）
$createTime = filectime($targetDir);
$createDate = date('Y-m-d', $createTime);

// 3. 判断是否为当天创建
if ($createDate === $today) {
    // 是当天：不处理
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录为当天创建，无需删除'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 4. 非当天：删除目录
$delResult = delDir($targetDir);
if ($delResult) {
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录非当天创建，已成功删除'
    ], JSON_UNESCAPED_UNICODE);
} else {
    echo json_encode([
        'code' =&gt; 1,
        'msg' =&gt; 'runtime目录删除失败，请检查权限'
    ], JSON_UNESCAPED_UNICODE);
}

// ===================== 工具函数：递归删除目录 =====================
function delDir($dir)
{
    // 不是目录直接返回
    if (!is_dir($dir)) return false;
    // 扫描目录内容
    $files = array_diff(scandir($dir), ['.', '..']);
    foreach ($files as $file) {
        $path = $dir . '/' . $file;
        is_dir($path) ? delDir($path) : unlink($path);
    }
    // 删除空目录
    return rmdir($dir);
}
?&gt;</code></pre>
<hr />
<h2>三、代码说明 &amp; 使用方法</h2>
<h3>1. 文件结构</h3>
<p>把两个文件放在<strong>网站根目录</strong>，结构如下：</p>
<pre><code>你的网站根目录/
├─ index.html       (前端jQuery代码)
├─ check_runtime.php (PHP接口)
└─ runtime/         (需要检查的目录)</code></pre>
<h3>2. 核心逻辑</h3>
<ol>
<li>前端jQuery自动发送POST请求到PHP</li>
<li>PHP检查<code>runtime</code>目录是否存在</li>
<li>获取目录创建日期，和<strong>当天日期</strong>对比</li>
<li>非当天 → 递归删除整个目录；当天 → 不处理</li>
<li>所有状态<strong>返回标准JSON</strong></li>
</ol>
<h3>3. 安全说明</h3>
<ul>
<li>✅ 无数据库操作 → 无SQL注入风险</li>
<li>✅ 限制目录操作范围 → 防路径遍历/文件删除漏洞</li>
<li>✅ 递归删除仅针对目标目录 → 不会误删其他文件</li>
<li>✅ 强制JSON响应、禁止缓存 → 接口更稳定</li>
</ul>
<h3>4. 测试方法</h3>
<ol>
<li>访问 <code>index.html</code></li>
<li>会自动执行检查，弹出结果提示</li>
<li>查看根目录的<code>runtime</code>目录，非当天会被自动删除</li>
</ol>
<hr />
<h2>四、返回JSON格式示例</h2>
<ol>
<li>目录不存在
<pre><code class="language-json">{"code":0,"msg":"runtime目录不存在，无需处理"}</code></pre></li>
<li>当天创建
<pre><code class="language-json">{"code":0,"msg":"runtime目录为当天创建，无需删除"}</code></pre></li>
<li>删除成功
<pre><code class="language-json">{"code":0,"msg":"runtime目录非当天创建，已成功删除"}</code></pre></li>
<li>权限不足删除失败
<pre><code class="language-json">{"code":1,"msg":"runtime目录删除失败，请检查权限"}</code></pre></li>
</ol>
<h2>上面是接口版，下面是静默版</h2>
<pre><code class="language-php">&lt;?php
// 注释JSON响应头，静默不输出返回内容
// header('Content-Type: application/json; charset=utf-8');
// header('Cache-Control: no-cache, no-store, must-revalidate');

// ===================== 配置 =====================
$targetDir = __DIR__ . '/runtime';
$today = date('Y-m-d');

// ===================== 安全检查：防止路径遍历攻击 =====================
if (strpos(realpath($targetDir), realpath(__DIR__)) !== 0) {
    // 不再输出JSON、不exit终止脚本，直接返回不再往下执行
    return;
}

// 目录不存在，直接返回
if (!is_dir($targetDir)) {
    return;
}

// 获取目录创建时间
$createTime = filectime($targetDir);
$createDate = date('Y-m-d', $createTime);

// 当天创建，无需删除，直接返回
if ($createDate === $today) {
    return;
}

// 非当天执行目录删除，删除后直接返回，不输出任何内容
delDir($targetDir);
return;

// ===================== 工具函数：递归删除目录 =====================
function delDir($dir)
{
    if (!is_dir($dir)) return false;
    $files = array_diff(scandir($dir), ['.', '..']);
    foreach ($files as $file) {
        $path = $dir . '/' . $file;
        is_dir($path) ? delDir($path) : unlink($path);
    }
    return rmdir($dir);
}
?&gt;</code></pre>
<h3>修改要点</h3>
<ol>
<li>移除所有 <code>echo json_encode()</code> 输出语句，不再向前端返回任何数据，实现静默执行</li>
<li>将所有 <code>exit</code> 替换为 <code>return</code>，仅终止当前脚本逻辑，不会中断外部引用文件的程序运行</li>
<li>保留原有路径安全校验、目录时间判断、递归删除全部核心逻辑不变</li>
<li>注释掉JSON相关响应头，避免响应头冲突干扰其他业务接口</li>
<li>无数据库操作，天然规避SQL注入风险，路径遍历防护保留</li>
</ol>
<h2>php引用文件</h2>
<pre><code>// 只引入一次，多次写这句也只执行一次文件代码
require_once 'config.php';</code></pre>]]></description>
    <pubDate>Wed, 17 Jun 2026 23:08:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-301.html</guid>
</item></channel>
</rss>