{"id":23,"date":"2026-07-22T22:53:50","date_gmt":"2026-07-22T14:53:50","guid":{"rendered":"https:\/\/bbs.diuz.cn\/?p=23"},"modified":"2026-07-22T22:53:50","modified_gmt":"2026-07-22T14:53:50","slug":"%e9%a1%b9%e7%9b%ae%e5%ae%89%e8%a3%85%e5%92%8c%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e","status":"publish","type":"post","link":"https:\/\/bbs.diuz.cn\/?p=23","title":{"rendered":"\u9879\u76ee\u5b89\u88c5\u548c\u914d\u7f6e\u8bf4\u660e"},"content":{"rendered":"# \u65f6\u5149\u90ae\u5c40 \u2014 Time Letter\r\n\r\n> \u7ed9\u672a\u6765\u7684\u81ea\u5df1\u6216\u4ed6\u4eba\u5199\u4fe1\uff0c\u5728\u6307\u5b9a\u65f6\u95f4\u901a\u8fc7\u90ae\u4ef6\u81ea\u52a8\u53d1\u9001\u3002  \r\n> **\u7248\u672c\uff1a** v1.0.0 | **\u53d1\u5e03\u65e5\u671f\uff1a** 2026\u5e747\u6708\r\n\r\n---\r\n\r\n## \u76ee\u5f55\r\n\r\n- [\u4e00\u3001\u9879\u76ee\u7b80\u4ecb](#\u4e00\u9879\u76ee\u7b80\u4ecb)\r\n- [\u4e8c\u3001\u529f\u80fd\u6982\u89c8](#\u4e8c\u529f\u80fd\u6982\u89c8)\r\n- [\u4e09\u3001\u6280\u672f\u6808\u4e0e\u8fd0\u884c\u73af\u5883](#\u4e09\u6280\u672f\u6808\u4e0e\u8fd0\u884c\u73af\u5883)\r\n- [\u56db\u3001\u5b89\u88c5\u524d\u51c6\u5907](#\u56db\u5b89\u88c5\u524d\u51c6\u5907)\r\n- [\u4e94\u3001\u5b89\u88c5\u6b65\u9aa4\u8be6\u89e3](#\u4e94\u5b89\u88c5\u6b65\u9aa4\u8be6\u89e3)\r\n- [\u516d\u3001\u5b89\u88c5\u540e\u5fc5\u8981\u914d\u7f6e](#\u516d\u5b89\u88c5\u540e\u5fc5\u8981\u914d\u7f6e)\r\n- [\u4e03\u3001\u7ba1\u7406\u540e\u53f0\u4f7f\u7528\u6307\u5357](#\u4e03\u7ba1\u7406\u540e\u53f0\u4f7f\u7528\u6307\u5357)\r\n- [\u516b\u3001\u5b9a\u65f6\u4efb\u52a1\u8be6\u89e3](#\u516b\u5b9a\u65f6\u4efb\u52a1\u8be6\u89e3)\r\n- [\u4e5d\u3001\u5e38\u89c1\u95ee\u9898\u6392\u67e5](#\u4e5d\u5e38\u89c1\u95ee\u9898\u6392\u67e5)\r\n\r\n---\r\n\r\n## \u4e00\u3001\u9879\u76ee\u7b80\u4ecb\r\n\r\n\u65f6\u5149\u90ae\u5c40\u662f\u4e00\u4e2a\u53ef\u4ee5\u72ec\u7acb\u90e8\u7f72\u5728\u4f60\u81ea\u5df1\u670d\u52a1\u5668\u4e0a\u7684**\u4fe1\u4ef6\u6295\u9012\u5e73\u53f0**\u3002\u7528\u6237\u5728\u7ebf\u64b0\u5199\u4fe1\u4ef6\uff0c\u8bbe\u5b9a\u672a\u6765\u67d0\u4e2a\u65e5\u671f\uff0c\u7cfb\u7edf\u4f1a\u5728\u6307\u5b9a\u65f6\u95f4\u81ea\u52a8\u5c06\u4fe1\u4ef6\u4ee5\u90ae\u4ef6\u5f62\u5f0f\u53d1\u9001\u5230\u6536\u4ef6\u4eba\u90ae\u7bb1\u3002\r\n\r\n**\u6838\u5fc3\u573a\u666f\uff1a**\r\n- \u7ed9\u4e00\u5e74\u540e\u7684\u81ea\u5df1\u5199\u4e00\u5c01\u4fe1\r\n- \u7ed9\u670b\u53cb\/\u5bb6\u4eba\u5728\u7279\u6b8a\u65e5\u671f\u53d1\u9001\u795d\u798f\r\n- \u5efa\u7acb\u516c\u5f00\u4fe1\u4ef6\u5899\uff0c\u5206\u4eab\u6545\u4e8b\u4e0e\u611f\u609f\r\n- \u4f5c\u4e3a\u4f01\u4e1a\/\u793e\u533a\u7684\u7eaa\u5ff5\u65e5\u8425\u9500\u5de5\u5177\r\n\r\n**\u67b6\u6784\u8bf4\u660e\uff1a** \u672c\u9879\u76ee\u9700\u8fde\u63a5\u6388\u6743\u670d\u52a1\u5668\u8fdb\u884c\u8bb8\u53ef\u8bc1\u9a8c\u8bc1\u548c\u7248\u672c\u66f4\u65b0\u3002\r\n\r\n---\r\n\r\n## \u4e8c\u3001\u529f\u80fd\u6982\u89c8\r\n\r\n### 2.1 \u7528\u6237\u529f\u80fd\r\n\r\n| \u6a21\u5757 | \u529f\u80fd\u63cf\u8ff0 |\r\n|------|---------|\r\n| \u7528\u6237\u7cfb\u7edf | \u6ce8\u518c\u3001\u767b\u5f55\u3001\u90ae\u7bb1\u9a8c\u8bc1\u3001\u5bc6\u7801\u91cd\u7f6e\u3001\u6635\u79f0\u4fee\u6539\u3001\u5934\u50cf\u4e0a\u4f20\uff08\u9700\u5ba1\u6838\uff09 |\r\n| \u5199\u4fe1\u529f\u80fd | \u5bcc\u6587\u672c\u7f16\u8f91\u5668\u3001\u81ea\u5b9a\u4e49\u53d1\u9001\u65f6\u95f4\u3001\u53ef\u9009\u62e9\u662f\u5426\u516c\u5f00 |\r\n| \u6211\u7684\u4fe1\u4ef6 | \u4fe1\u4ef6\u5217\u8868\u7ba1\u7406\u3001\u8be6\u60c5\u67e5\u770b\u3001\u72b6\u6001\u8ffd\u8e2a\uff08\u5f85\u53d1\u9001\/\u5df2\u53d1\u9001\/\u53d1\u9001\u5931\u8d25\uff09 |\r\n| \u516c\u5f00\u4fe1\u4ef6 | \u4fe1\u4ef6\u5e7f\u573a\u6d4f\u89c8\u3001\u70b9\u8d5e\u3001\u8bc4\u8bba\u3001\u6309\u70ed\u5ea6\/\u65f6\u95f4\u6392\u5e8f |\r\n| \u8ba2\u9605\u7cfb\u7edf | \u514d\u8d39\u8bd5\u7528\uff087\u5929\uff09\u3001\u5e74\u4ed8\u8ba2\u9605\u3001\u7ec8\u8eab\u8ba2\u9605\u3001\u8ba2\u9605\u7801\u6fc0\u6d3b |\r\n| \u7ad9\u5185\u6d88\u606f | \u7cfb\u7edf\u901a\u77e5\u3001\u5ba1\u6838\u7ed3\u679c\u901a\u77e5 |\r\n\r\n### 2.2 \u7ba1\u7406\u540e\u53f0\u529f\u80fd\r\n\r\n| \u6a21\u5757 | \u529f\u80fd\u63cf\u8ff0 |\r\n|------|---------|\r\n| \u4eea\u8868\u76d8 | \u603b\u89c8\u7edf\u8ba1\uff1a\u7528\u6237\u6570\u3001\u4fe1\u4ef6\u6570\u3001\u53d1\u9001\u6210\u529f\u7387\u3001\u4eca\u65e5\u6570\u636e |\r\n| \u7528\u6237\u7ba1\u7406 | \u7528\u6237\u5217\u8868\u3001\u641c\u7d22\u7b5b\u9009\u3001\u72b6\u6001\u7ba1\u7406\uff08\u542f\u7528\/\u7981\u7528\/\u5c01\u7981\uff09\u3001\u89d2\u8272\u5206\u914d |\r\n| \u4fe1\u4ef6\u7ba1\u7406 | \u5168\u90e8\u4fe1\u4ef6\u5217\u8868\u3001\u5ba1\u6838\uff08\u901a\u8fc7\/\u62d2\u7edd\uff09\u3001\u72b6\u6001\u53d8\u66f4\u3001\u6279\u91cf\u64cd\u4f5c |\r\n| \u8bc4\u8bba\u5ba1\u6838 | \u516c\u5f00\u4fe1\u8bc4\u8bba\u5ba1\u6838\u3001\u654f\u611f\u8bcd\u8fc7\u6ee4\u3001\u901a\u8fc7\/\u62d2\u7edd |\r\n| \u5f00\u53d1\u8005\u516c\u544a | \u63a5\u6536\u67e5\u770b\u6388\u6743\u670d\u52a1\u5668\u53d1\u6765\u7684\u516c\u544a\u901a\u77e5 |\r\n| \u7cfb\u7edf\u8bbe\u7f6e | \u7ad9\u70b9\u4fe1\u606f\u3001\u90ae\u4ef6\u914d\u7f6e\uff08SMTP\uff09\u3001\u7ef4\u62a4\u6a21\u5f0f\u3001\u4f2a\u9759\u6001\u5f00\u5173\uff08\u4ed8\u8d39\u529f\u80fd\uff09 |\r\n| \u8ba2\u9605\u6fc0\u6d3b | \u8f93\u5165\u8ba2\u9605\u7801\u6fc0\u6d3b\u5e74\u4ed8\u6216\u7ec8\u8eab\u8ba2\u9605 |\r\n| \u57df\u540d\u7ed1\u5b9a | \u66f4\u6362\u7ed1\u5b9a\u7684\u57df\u540d |\r\n| \u66f4\u65b0\u7ba1\u7406 | \u68c0\u67e5\u66f4\u65b0\u3001\u4e00\u952e\u5347\u7ea7 |\r\n\r\n### 2.3 \u7cfb\u7edf\u7279\u6027\r\n\r\n- **PC\/Mobile \u53cc\u7aef\u7269\u7406\u9694\u79bb**\uff1a\u81ea\u52a8\u68c0\u6d4b\u8bbe\u5907\u7c7b\u578b\uff0c\u52a0\u8f7d\u72ec\u7acb\u7684 CSS \u548c\u7ec4\u4ef6\r\n- **\u5185\u5bb9\u5ba1\u6838\u4f53\u7cfb**\uff1a\u654f\u611f\u8bcd\u5e93 + \u4fe1\u8a89\u5206\u673a\u5236\uff08\u226580 \u5206\u81ea\u52a8\u8fc7\u5ba1\uff09\r\n- **\u81ea\u52a8\u66f4\u65b0**\uff1a\u540e\u53f0\u4e00\u952e\u68c0\u67e5\u5e76\u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c\r\n- **\u7ef4\u62a4\u6a21\u5f0f**\uff1a\u652f\u6301\u624b\u52a8\/\u5b9a\u65f6\u5f00\u542f\uff0c\u5305\u542b\u5012\u8ba1\u65f6\u6062\u590d\u9875\u9762\r\n- **\u901f\u7387\u9650\u5236**\uff1a\u767b\u5f55\u3001\u6ce8\u518c\u3001\u53d1\u4fe1\u7b49\u5173\u952e\u64cd\u4f5c\u5185\u7f6e\u9891\u7387\u9650\u5236\r\n- **Redis \u7f13\u5b58**\uff1a\u53ef\u9009\u542f\u7528 Redis \u63d0\u5347\u6027\u80fd\r\n\r\n---\r\n\r\n## \u4e09\u3001\u6280\u672f\u6808\u4e0e\u8fd0\u884c\u73af\u5883\r\n\r\n### 3.1 \u6280\u672f\u6808\r\n\r\n| \u5c42\u7ea7 | \u6280\u672f\u9009\u578b |\r\n|------|---------|\r\n| \u540e\u7aef\u8bed\u8a00 | PHP 8.1+ |\r\n| \u6570\u636e\u5e93 | MySQL 5.7+\uff08InnoDB \u5f15\u64ce\uff0cutf8mb4 \u5b57\u7b26\u96c6\uff09 |\r\n| Web \u670d\u52a1\u5668 | Nginx\uff08\u63a8\u8350\uff09\u6216 Apache |\r\n| \u90ae\u4ef6\u5e93 | PHPMailer 6.6+\uff08\u5df2\u5185\u7f6e\uff09 |\r\n| \u524d\u7aef\u6846\u67b6 | Bootstrap 5 + jQuery |\r\n| \u56fe\u8868\u5e93 | Chart.js 3.9 |\r\n| CSS \u65b9\u6848 | \u81ea\u7814 PC\/Mobile \u53cc\u7aef\u72ec\u7acb CSS |\r\n| \u7f13\u5b58 | \u6587\u4ef6\u7f13\u5b58\uff08\u9ed8\u8ba4\uff09\/ Redis\uff08\u53ef\u9009\uff09 |\r\n| \u914d\u7f6e\u683c\u5f0f | .env \u6587\u4ef6 |\r\n| \u5bc6\u7801\u52a0\u5bc6 | bcrypt\uff08password_hash\uff09 |\r\n| \u4f1a\u8bdd | PHP Session + CSRF Token |\r\n| \u670d\u52a1\u5668\u7cfb\u7edf | Debian 12\uff08\u63a8\u8350\uff09\uff0c\u517c\u5bb9 Ubuntu 20.04+ \/ CentOS 7+ |\r\n\r\n### 3.2 \u670d\u52a1\u5668\u6700\u4f4e\u914d\u7f6e\r\n\r\n| \u9879\u76ee | \u5efa\u8bae\u914d\u7f6e | \u8bf4\u660e |\r\n|------|---------|------|\r\n| \u64cd\u4f5c\u7cfb\u7edf | Debian 12 | \u63a8\u8350\u4f7f\u7528\u5b9d\u5854\u9762\u677f\u7ba1\u7406 |\r\n| CPU | 1 \u6838\u4ee5\u4e0a | 2 \u6838\u66f4\u4f73 |\r\n| \u5185\u5b58 | 2 GB \u4ee5\u4e0a | \u542b MySQL \u8fd0\u884c\u5f00\u9500 |\r\n| \u78c1\u76d8 | 2 GB \u4ee5\u4e0a\u53ef\u7528\u7a7a\u95f4 | \u542b\u9879\u76ee\u6587\u4ef6 + \u6570\u636e\u5e93 + \u65e5\u5fd7 |\r\n| PHP | **8.1**\uff08\u5fc5\u987b\uff09 | \u4e0d\u652f\u6301 7.x \u53ca\u4ee5\u4e0b |\r\n| MySQL | **5.7+**\uff08\u63a8\u8350\uff09 | \u6700\u4f4e\u517c\u5bb9 5.6.5 |\r\n| Web \u670d\u52a1\u5668 | Nginx 1.18+ | \u63a8\u8350 |\r\n\r\n### 3.3 \u5fc5\u9700 PHP \u6269\u5c55\r\n\r\n| \u6269\u5c55 | \u7528\u9014 | \u662f\u5426\u5fc5\u987b |\r\n|------|------|:---:|\r\n| pdo + pdo_mysql | \u6570\u636e\u5e93\u8fde\u63a5 | \u2705 \u5fc5\u987b |\r\n| gd | \u9a8c\u8bc1\u7801\u751f\u6210\u3001\u56fe\u7247\u5904\u7406 | \u2705 \u5fc5\u987b |\r\n| mbstring | \u591a\u5b57\u8282\u5b57\u7b26\u4e32\u5904\u7406 | \u2705 \u5fc5\u987b |\r\n| fileinfo | \u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b | \u2705 \u5fc5\u987b |\r\n| openssl | \u52a0\u5bc6\u4e0e\u5b89\u5168\u901a\u4fe1 | \u2705 \u5fc5\u987b |\r\n| curl | HTTP \u8fdc\u7a0b\u8bf7\u6c42 | \u2705 \u5fc5\u987b |\r\n| json | JSON \u6570\u636e\u5904\u7406 | \u2705 \u5fc5\u987b |\r\n| xml | XML \u89e3\u6790 | \u2705 \u5fc5\u987b |\r\n| zip | \u538b\u7f29\u5305\u5904\u7406\uff08\u7cfb\u7edf\u66f4\u65b0\uff09 | \u2705 \u5fc5\u987b |\r\n\r\n---\r\n\r\n## \u56db\u3001\u5b89\u88c5\u524d\u51c6\u5907\r\n\r\n### 4.1 \u4f60\u9700\u8981\u51c6\u5907\r\n\r\n1. **\u4e00\u53f0\u670d\u52a1\u5668**\uff08VPS \u6216\u4e91\u670d\u52a1\u5668\uff09\uff0c\u63a8\u8350\u5b89\u88c5 **Debian 12** \u7cfb\u7edf\r\n2. **\u5b9d\u5854\u9762\u677f** \u5df2\u5b89\u88c5\u5728\u670d\u52a1\u5668\u4e0a\uff08\u5982\u672a\u5b89\u88c5\uff0c\u8bbf\u95ee [bt.cn](https:\/\/www.bt.cn) \u67e5\u770b\u6559\u7a0b\uff09\r\n3. **\u4e00\u4e2a\u57df\u540d**\uff08\u5982 `yourdomain.com`\uff09\uff0c\u5df2\u89e3\u6790\u5230\u670d\u52a1\u5668 IP\r\n4. **SSL \u8bc1\u4e66**\uff08\u63a8\u8350\uff0c\u5b9d\u5854\u53ef\u4e00\u952e\u7533\u8bf7\u514d\u8d39 Let's Encrypt \u8bc1\u4e66\uff09\r\n\r\n### 4.2 \u73af\u5883\u786e\u8ba4\u6e05\u5355\r\n\r\n| \u68c0\u67e5\u9879 | \u8981\u6c42 | \u68c0\u67e5\u65b9\u6cd5 |\r\n|--------|------|---------|\r\n| \u5b9d\u5854\u9762\u677f | \u6700\u65b0\u7a33\u5b9a\u7248 | \u767b\u5f55\u9762\u677f\u67e5\u770b\u7248\u672c\u53f7 |\r\n| PHP | 8.1 \u5df2\u5b89\u88c5 | \u8f6f\u4ef6\u5546\u5e97 \u2192 \u5df2\u5b89\u88c5 |\r\n| MySQL | 5.7 \u5df2\u5b89\u88c5 | \u8f6f\u4ef6\u5546\u5e97 \u2192 \u5df2\u5b89\u88c5 |\r\n| Nginx | \u5df2\u5b89\u88c5 | \u8f6f\u4ef6\u5546\u5e97 \u2192 \u5df2\u5b89\u88c5 |\r\n| \u57df\u540d\u89e3\u6790 | \u5df2\u6307\u5411\u670d\u52a1\u5668 IP | ping \u57df\u540d\u786e\u8ba4 |\r\n\r\n---\r\n\r\n## \u4e94\u3001\u5b89\u88c5\u6b65\u9aa4\u8be6\u89e3\uff08\u5171 5 \u6b65\uff09\r\n\r\n> \u4ee5\u4e0b\u6b65\u9aa4\u8bf7\u4e25\u683c\u6309\u987a\u5e8f\u64cd\u4f5c\uff0c\u4e0d\u8981\u8df3\u8fc7\u4efb\u4f55\u4e00\u6b65\u3002\r\n\r\n---\r\n\r\n### \u7b2c\u4e00\u6b65\uff1a\u5728\u5b9d\u5854\u4e2d\u521b\u5efa\u7f51\u7ad9\u7ad9\u70b9\r\n\r\n1. \u767b\u5f55\u5b9d\u5854\u9762\u677f\uff08\u6d4f\u89c8\u5668\u8bbf\u95ee `http:\/\/\u4f60\u7684\u670d\u52a1\u5668IP:8888`\uff09\r\n2. \u5de6\u4fa7\u83dc\u5355\u70b9\u51fb **\u7f51\u7ad9** \u2192 \u5de6\u4e0a\u89d2 **\u6dfb\u52a0\u7ad9\u70b9**\r\n3. \u586b\u5199\u7ad9\u70b9\u4fe1\u606f\uff1a\r\n\r\n   | \u5b57\u6bb5 | \u586b\u5199\u5185\u5bb9 |\r\n   |------|---------|\r\n   | \u57df\u540d | \u4f60\u7684\u57df\u540d\uff08\u5982 `yourdomain.com`\uff09 |\r\n   | PHP \u7248\u672c | **PHP-81** |\r\n   | \u6570\u636e\u5e93 | \u9009\u62e9 **MySQL**\uff0c\u52fe\u9009\"\u81ea\u52a8\u521b\u5efa\u6570\u636e\u5e93\" |\r\n\r\n4. \u70b9\u51fb **\u63d0\u4ea4**\r\n\r\n\u521b\u5efa\u540e\u8bf7\u8bb0\u4e0b\u4ee5\u4e0b\u4fe1\u606f\uff08\u540e\u7eed\u6b65\u9aa4\u9700\u8981\uff09\uff1a\r\n\r\n```\r\n\u6570\u636e\u5e93\u540d\uff1a        ____________\r\n\u6570\u636e\u5e93\u7528\u6237\u540d\uff1a    ____________\r\n\u6570\u636e\u5e93\u5bc6\u7801\uff1a      ____________\r\n\u7ad9\u70b9\u6839\u76ee\u5f55\uff1a      \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/\r\n```\r\n\r\n> \u5fd8\u8bb0\u53ef\u5728\u5b9d\u5854 \u2192 \u6570\u636e\u5e93 \u4e2d\u67e5\u770b\u3002\r\n\r\n---\r\n\r\n### \u7b2c\u4e8c\u6b65\uff1a\u5b89\u88c5 PHP \u5fc5\u9700\u6269\u5c55\r\n\r\n1. \u5b9d\u5854 \u2192 **\u8f6f\u4ef6\u5546\u5e97** \u2192 \u627e\u5230 **PHP-8.1** \u2192 \u70b9\u51fb **\u8bbe\u7f6e**\r\n2. \u9009\u62e9 **\u5b89\u88c5\u6269\u5c55** \u6807\u7b7e\r\n3. \u786e\u8ba4\u4ee5\u4e0b\u6269\u5c55\u5747\u5df2\u5b89\u88c5\uff08\u7eff\u8272\u5373\u5df2\u5b89\u88c5\uff0c\u672a\u5b89\u88c5\u7684\u70b9\u5b89\u88c5\uff09\uff1a\r\n\r\n   - `pdo_mysql` \u2014 \u6570\u636e\u5e93\u8fde\u63a5\r\n   - `gd` \u2014 \u9a8c\u8bc1\u7801\/\u56fe\u7247\u5904\u7406\r\n   - `fileinfo` \u2014 \u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\r\n   - `mbstring` \u2014 \u591a\u5b57\u8282\u5b57\u7b26\u4e32\r\n   - `openssl` \u2014 \u52a0\u5bc6\u901a\u4fe1\r\n   - `curl` \u2014 \u8fdc\u7a0b\u8bf7\u6c42\r\n   - `zip` \u2014 \u538b\u7f29\u5305\u5904\u7406\r\n\r\n4. \u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u5728 **\u914d\u7f6e\u4fee\u6539** \u6807\u7b7e\u4e2d\u786e\u8ba4\u4e0a\u4f20\u9650\u5236\uff1a\r\n\r\n   ```\r\n   upload_max_filesize = 50M\r\n   post_max_size = 50M\r\n   ```\r\n\r\n   \u4fee\u6539\u540e\u70b9\u51fb\u4fdd\u5b58\uff0c\u5e76**\u91cd\u542f PHP**\u3002\r\n\r\n---\r\n\r\n### \u7b2c\u4e09\u6b65\uff1a\u4e0a\u4f20\u9879\u76ee\u6587\u4ef6\r\n\r\n1. \u5b9d\u5854 \u2192 **\u6587\u4ef6** \u2192 \u8fdb\u5165\u7ad9\u70b9\u6839\u76ee\u5f55\uff08`\/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/`\uff09\r\n2. \u4e0a\u4f20\u9879\u76ee\u538b\u7f29\u5305\u5e76\u89e3\u538b\uff08\u786e\u4fdd\u6587\u4ef6\u76f4\u63a5\u5728\u6839\u76ee\u5f55\u4e0b\uff09\r\n\r\n> **\u91cd\u8981\u68c0\u67e5\uff1a** \u89e3\u538b\u540e\uff0c`index.php`\u3001`install.php` \u7b49\u6587\u4ef6\u5e94\u5728 `\/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/` \u4e0b\uff0c\u800c\u4e0d\u662f\u5b50\u6587\u4ef6\u5939\u4e2d\u3002\u9879\u76ee\u5df2\u5185\u7f6e PHPMailer\uff0c\u65e0\u9700\u989d\u5916\u5b89\u88c5 Composer \u4f9d\u8d56\u3002\r\n\r\n---\r\n\r\n### \u7b2c\u56db\u6b65\uff1a\u6d4f\u89c8\u5668\u5b8c\u6210\u5b89\u88c5\u5411\u5bfc\r\n\r\n1. \u6d4f\u89c8\u5668\u8bbf\u95ee\uff1a`http:\/\/\u4f60\u7684\u57df\u540d\/install.php`\r\n2. \u6309\u5411\u5bfc\u5b8c\u6210\u5b89\u88c5\uff1a\r\n\r\n   **Step 0 \u2014 \u73af\u5883\u68c0\u6d4b**\r\n   - \u81ea\u52a8\u68c0\u67e5 PHP \u7248\u672c\u3001\u6269\u5c55\u3001\u76ee\u5f55\u6743\u9650\r\n   - \u5168\u90e8\u7eff\u8272 \u2714 \u901a\u8fc7\u540e\u70b9\u51fb\u4e0b\u4e00\u6b65\r\n\r\n   **Step 1 \u2014 \u6388\u6743\u8fde\u63a5**\r\n   - \u7cfb\u7edf\u81ea\u52a8\u7533\u8bf7 API Key\uff0c\u5168\u7a0b\u81ea\u52a8\u5b8c\u6210\r\n\r\n   **Step 2 \u2014 \u6570\u636e\u5e93\u914d\u7f6e**\r\n   - \u586b\u5199\u7b2c\u4e00\u6b65\u8bb0\u4e0b\u7684\u6570\u636e\u5e93\u540d\u3001\u7528\u6237\u540d\u3001\u5bc6\u7801\r\n   - \u4e3b\u673a\u586b `127.0.0.1`\r\n\r\n   **Step 3 \u2014 \u7ba1\u7406\u5458\u8d26\u6237**\r\n   - \u8bbe\u7f6e\u7ba1\u7406\u5458\u90ae\u7bb1\u548c\u767b\u5f55\u5bc6\u7801\r\n\r\n   **Step 4 \u2014 \u6267\u884c\u5b89\u88c5**\r\n   - \u81ea\u52a8\u521b\u5efa\u6570\u636e\u5e93\u8868\u3001\u5199\u5165\u9ed8\u8ba4\u914d\u7f6e\r\n   - \u751f\u6210 `.env` \u548c `installed.lock` \u6587\u4ef6\r\n\r\n   **Step 5 \u2014 \u5b8c\u6210**\r\n   - \u663e\u793a\u5b89\u88c5\u62a5\u544a\uff0c\u63d0\u4f9b\u540e\u53f0\u5165\u53e3\r\n\r\n---\r\n\r\n### \u7b2c\u4e94\u6b65\uff1a\u5b89\u88c5\u540e\u5b89\u5168\u68c0\u67e5\r\n\r\n1. **\u5220\u9664\u5b89\u88c5\u6587\u4ef6\uff1a** \u5b9d\u5854 \u2192 \u6587\u4ef6 \u2192 \u627e\u5230 `install.php` \u2192 \u53f3\u952e\u5220\u9664\r\n2. **\u8bbe\u7f6e\u76ee\u5f55\u6743\u9650\uff1a**\r\n\r\n```bash\r\n# SSH \u7ec8\u7aef\u6267\u884c\r\nchmod -R 755 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\r\nchown -R www:www \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\r\nchmod 777 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/uploads\r\nchmod 777 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/logs\r\nchmod 777 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/runtime\r\n```\r\n\r\n---\r\n\r\n## \u516d\u3001\u5b89\u88c5\u540e\u5fc5\u8981\u914d\u7f6e\r\n\r\n### 6.1 \u914d\u7f6e\u90ae\u4ef6\u53d1\u9001\uff08SMTP\uff09\r\n\r\n> \u4e0d\u914d\u7f6e\u6b64\u9879\uff0c\u6240\u6709\u4fe1\u4ef6\u65e0\u6cd5\u53d1\u9001\u3002\r\n\r\n1. \u767b\u5f55\u540e\u53f0 \u2192 **\u7cfb\u7edf\u8bbe\u7f6e** \u2192 **\u90ae\u4ef6\u914d\u7f6e**\r\n2. \u586b\u5199 SMTP \u4fe1\u606f\uff1a\r\n\r\n\u4ee5 **QQ \u90ae\u7bb1** \u4e3a\u4f8b\uff1a\r\n\r\n| \u5b57\u6bb5 | \u586b\u5199\u5185\u5bb9 |\r\n|------|---------|\r\n| SMTP \u670d\u52a1\u5668 | `smtp.qq.com` |\r\n| SMTP \u7aef\u53e3 | `465` |\r\n| \u52a0\u5bc6\u65b9\u5f0f | `SSL` |\r\n| \u53d1\u4ef6\u90ae\u7bb1 | `\u4f60\u7684QQ\u53f7@qq.com` |\r\n| SMTP \u6388\u6743\u7801 | 16\u4f4d\u6388\u6743\u7801\uff08\u975eQQ\u5bc6\u7801\uff09 |\r\n| \u53d1\u4ef6\u4eba\u540d\u79f0 | `\u65f6\u5149\u90ae\u5c40` |\r\n\r\n> **\u83b7\u53d6 QQ \u90ae\u7bb1\u6388\u6743\u7801\uff1a** QQ \u90ae\u7bb1 \u2192 \u8bbe\u7f6e \u2192 \u8d26\u6237 \u2192 POP3\/IMAP\/SMTP\u670d\u52a1 \u2192 \u751f\u6210\u6388\u6743\u7801 \u2192 \u6309\u77ed\u4fe1\u63d0\u793a\u64cd\u4f5c \u2192 \u83b7\u53d6 16 \u4f4d\u6388\u6743\u7801\u3002\r\n\r\n**\u5176\u4ed6\u90ae\u7bb1\u53c2\u8003\uff1a**\r\n\r\n| \u90ae\u7bb1 | SMTP\u670d\u52a1\u5668 | \u7aef\u53e3 | \u52a0\u5bc6 |\r\n|------|-----------|:---:|:---:|\r\n| 163\u90ae\u7bb1 | smtp.163.com | 465 | SSL |\r\n| Gmail | smtp.gmail.com | 587 | TLS |\r\n| \u963f\u91cc\u4f01\u4e1a\u90ae | smtp.qiye.aliyun.com | 465 | SSL |\r\n| \u817e\u8baf\u4f01\u4e1a\u90ae | smtp.exmail.qq.com | 465 | SSL |\r\n\r\n\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u70b9\u51fb **\u6d4b\u8bd5\u53d1\u9001** \u9a8c\u8bc1\u914d\u7f6e\u662f\u5426\u751f\u6548\u3002\r\n\r\n### 6.2 \u914d\u7f6e\u5b9a\u65f6\u4efb\u52a1\uff08Cron\uff09\r\n\r\n> \u4e0d\u914d\u7f6e\u6b64\u9879\uff0c\u4fe1\u4ef6\u4e0d\u4f1a\u81ea\u52a8\u53d1\u9001\u3002\r\n\r\n\u7cfb\u7edf\u53ea\u9700 **1 \u4e2a\u8ba1\u5212\u4efb\u52a1**\uff0c\u6bcf 1 \u5206\u949f\u6267\u884c\u4e00\u6b21\uff0c\u81ea\u52a8\u5b8c\u6210\u4fe1\u4ef6\u6295\u9012\u548c\u7cfb\u7edf\u81ea\u68c0\u3002\r\n\r\n**\u5b9d\u5854\u9762\u677f\u8bbe\u7f6e\u65b9\u6cd5\uff1a**\r\n\r\n1. \u5b9d\u5854 \u2192 **\u8ba1\u5212\u4efb\u52a1** \u2192 **\u6dfb\u52a0\u4efb\u52a1**\r\n2. \u586b\u5199\uff1a\r\n\r\n   | \u5b57\u6bb5 | \u503c |\r\n   |------|-----|\r\n   | \u4efb\u52a1\u7c7b\u578b | Shell \u811a\u672c |\r\n   | \u4efb\u52a1\u540d\u79f0 | \u65f6\u5149\u90ae\u5c40\u5b9a\u65f6\u4efb\u52a1 |\r\n   | \u6267\u884c\u5468\u671f | N \u5206\u949f \u2192 \u586b `1` |\r\n   | \u811a\u672c\u5185\u5bb9 | \u89c1\u4e0b\u65b9 |\r\n\r\n```bash\r\n\/www\/server\/php\/81\/bin\/php \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/cron\/run.php >> \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/logs\/cron.log 2>&1\r\n```\r\n\r\n3. \u70b9\u51fb\u786e\u5b9a\u4fdd\u5b58\u540e\uff0c\u53ef\u70b9\u51fb **\u6267\u884c** \u624b\u52a8\u6d4b\u8bd5\u4e00\u6b21\u3002\r\n\r\n### 6.3 \u8bbe\u7f6e\u7ad9\u70b9\u4fe1\u606f\uff08\u5efa\u8bae\uff09\r\n\r\n1. \u540e\u53f0 \u2192 **\u7cfb\u7edf\u8bbe\u7f6e** \u2192 **\u7ad9\u70b9\u4fe1\u606f**\r\n2. \u5efa\u8bae\u914d\u7f6e\u7f51\u7ad9\u540d\u79f0\u3001\u7f51\u7ad9\u63cf\u8ff0\u548c\u5173\u952e\u8bcd\uff08\u5f71\u54cd SEO \u548c\u6d4f\u89c8\u5668\u6807\u7b7e\u663e\u793a\uff09\u3002\r\n\r\n### 6.4 \u4f2a\u9759\u6001\u914d\u7f6e\uff08\u53ef\u9009\uff0c\u4ed8\u8d39\u529f\u80fd\uff09\r\n\r\n\u9879\u76ee\u9ed8\u8ba4\u4f7f\u7528 `?page=` \u53c2\u6570\u8def\u7531\uff0c\u65e0\u9700\u989d\u5916\u914d\u7f6e\u5373\u53ef\u6b63\u5e38\u8fd0\u884c\u3002\u5f00\u542f\u4f2a\u9759\u6001\u540e\uff0cURL \u5c06\u4ece `\/index.php?page=home` \u53d8\u4e3a `\/home`\uff0c\u66f4\u7f8e\u89c2\u3002\r\n\r\n\u5982\u9700\u5f00\u542f\uff1a\u540e\u53f0 \u2192 \u7cfb\u7edf\u8bbe\u7f6e \u2192 \u7f51\u7ad9\u8bbe\u7f6e \u2192 \u4f2a\u9759\u6001\u914d\u7f6e\u3002\r\n\r\n### 6.5 \u7ef4\u62a4\u6a21\u5f0f\r\n\r\n\u540e\u53f0\u53ef\u5f00\u542f\u5168\u7ad9\u7ef4\u62a4\u6a21\u5f0f\uff0c\u5f00\u542f\u540e\u524d\u53f0\u663e\u793a\u7ef4\u62a4\u9875\u9762\uff0c\u7ba1\u7406\u5458\u4ecd\u53ef\u6b63\u5e38\u8bbf\u95ee\u540e\u53f0\u3002\r\n\r\n---\r\n\r\n## \u4e03\u3001\u7ba1\u7406\u540e\u53f0\u4f7f\u7528\u6307\u5357\r\n\r\n### 7.1 \u8bbf\u95ee\u540e\u53f0\r\n\r\n```\r\nhttp:\/\/\u4f60\u7684\u57df\u540d\/admin\/\r\n```\r\n\r\n\u4f7f\u7528\u5b89\u88c5\u65f6\u8bbe\u7f6e\u7684\u7ba1\u7406\u5458\u90ae\u7bb1\u548c\u5bc6\u7801\u767b\u5f55\u3002\r\n\r\n### 7.2 \u7ba1\u7406\u529f\u80fd\u901f\u89c8\r\n\r\n**\u4eea\u8868\u76d8\uff08\u9996\u9875\uff09**\r\n\u67e5\u770b\u6838\u5fc3\u8fd0\u884c\u6570\u636e\uff1a\u603b\u7528\u6237\u6570\u3001\u603b\u4fe1\u4ef6\u6570\u3001\u5df2\u53d1\u9001\/\u5f85\u53d1\u9001\u6570\u91cf\u3001\u4eca\u65e5\u65b0\u589e\u3001\u53d1\u9001\u6210\u529f\u7387\u3002\r\n\r\n**\u7528\u6237\u7ba1\u7406**\r\n- \u641c\u7d22\uff1a\u6309\u7528\u6237\u540d\u3001\u90ae\u7bb1\u3001ID \u641c\u7d22\r\n- \u7b5b\u9009\uff1a\u6309\u72b6\u6001\uff08\u6b63\u5e38\/\u7981\u7528\/\u5c01\u7981\uff09\u3001\u89d2\u8272\uff08\u7528\u6237\/\u5ba1\u6838\u5458\/\u7ba1\u7406\u5458\uff09\r\n- \u64cd\u4f5c\uff1a\u7f16\u8f91\u7528\u6237\u4fe1\u606f\u3001\u4fee\u6539\u89d2\u8272\u3001\u542f\u7528\/\u7981\u7528\/\u5c01\u7981\u3001\u91cd\u7f6e\u5bc6\u7801\r\n- \u67e5\u770b\uff1a\u7528\u6237\u8be6\u7ec6\u4fe1\u606f\u3001\u53d1\u9001\u8bb0\u5f55\r\n\r\n**\u4fe1\u4ef6\u7ba1\u7406**\r\n- \u67e5\u770b\u5168\u90e8\u4fe1\u4ef6\u7684\u6807\u9898\u3001\u4f5c\u8005\u3001\u6536\u4ef6\u4eba\u3001\u53d1\u9001\u65f6\u95f4\u3001\u72b6\u6001\r\n- \u5ba1\u6838\u4fe1\u4ef6\uff1a\u901a\u8fc7 \/ \u62d2\u7edd\r\n- \u6279\u91cf\u64cd\u4f5c\uff1a\u6279\u91cf\u901a\u8fc7\u3001\u6279\u91cf\u62d2\u7edd\u3001\u6279\u91cf\u5220\u9664\r\n\r\n**\u8bc4\u8bba\u5ba1\u6838**\r\n- \u516c\u5f00\u4fe1\u8bc4\u8bba\u5217\u8868\uff0c\u652f\u6301\u6309\u72b6\u6001\u7b5b\u9009\uff08\u5f85\u5ba1\/\u5df2\u901a\u8fc7\/\u5df2\u62d2\u7edd\uff09\r\n- \u6279\u91cf\u5ba1\u6838\u64cd\u4f5c\r\n- \u8bc4\u8bba\u5185\u5bb9\u81ea\u52a8\u654f\u611f\u8bcd\u68c0\u6d4b\r\n\r\n**\u5f00\u53d1\u8005\u516c\u544a**\r\n- \u63a5\u6536\u67e5\u770b\u6388\u6743\u670d\u52a1\u5668\u53d1\u6765\u7684\u516c\u544a\u901a\u77e5\r\n- \u4fa7\u8fb9\u680f\u7ea2\u70b9\u63d0\u9192\u672a\u8bfb\u516c\u544a\r\n\r\n**\u8ba2\u9605\u6fc0\u6d3b**\r\n- \u8f93\u5165\u8ba2\u9605\u7801\u6fc0\u6d3b\u5e74\u4ed8\u6216\u7ec8\u8eab\u8ba2\u9605\r\n- \u5728\u540e\u53f0 \u2192 \u8ba2\u9605\u7ba1\u7406 \u9875\u9762\u64cd\u4f5c\r\n\r\n**\u7cfb\u7edf\u8bbe\u7f6e**\r\n- \u7ad9\u70b9\u4fe1\u606f\u3001\u90ae\u4ef6\u914d\u7f6e\uff08\u542b SMTP \u6d4b\u8bd5\u53d1\u9001\uff09\r\n- \u7ef4\u62a4\u6a21\u5f0f\uff08\u624b\u52a8\/\u5b9a\u65f6\uff09\r\n- \u4f2a\u9759\u6001\u5f00\u5173\uff08\u4ed8\u8d39\u529f\u80fd\uff09\r\n- \u5185\u5bb9\u5ba1\u6838\u5f00\u5173\r\n\r\n**\u57df\u540d\u7ed1\u5b9a**\r\n- \u67e5\u770b\u5f53\u524d\u7ed1\u5b9a\u57df\u540d\r\n- \u66f4\u6362\u7ed1\u5b9a\u57df\u540d\r\n\r\n**\u66f4\u65b0\u7ba1\u7406**\r\n- \u68c0\u67e5\u662f\u5426\u6709\u65b0\u7248\u672c\r\n- \u4e00\u952e\u6267\u884c\u66f4\u65b0\r\n\r\n---\r\n\r\n## \u516b\u3001\u5b9a\u65f6\u4efb\u52a1\u8be6\u89e3\r\n\r\n### 8.1 \u5de5\u4f5c\u6d41\u7a0b\r\n\r\n`cron\/run.php` \u6bcf\u5206\u949f\u6267\u884c\u4e00\u6b21\uff0c\u81ea\u52a8\u5b8c\u6210\uff1a\r\n- **\u53d1\u4fe1**\uff1a\u67e5\u8be2\u5230\u671f\u4fe1\u4ef6\uff0c\u9010\u5c01\u901a\u8fc7 SMTP \u53d1\u9001\uff0c\u5931\u8d25\u81ea\u52a8\u91cd\u8bd5\uff08\u6700\u591a 3 \u6b21\uff09\r\n- **\u7cfb\u7edf\u81ea\u68c0**\uff1a\u5b9a\u65f6\u6821\u9a8c\u7ad9\u70b9\u8fd0\u884c\u72b6\u6001\r\n\r\n### 8.2 \u65e5\u5fd7\u67e5\u770b\r\n\r\n```bash\r\n# \u67e5\u770b\u5b9a\u65f6\u4efb\u52a1\u65e5\u5fd7\r\ntail -100 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/logs\/cron.log\r\n\r\n# \u5b9e\u65f6\u76d1\u63a7\r\ntail -f \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/logs\/cron.log\r\n```\r\n\r\n\u65e5\u5fd7\u6700\u957f\u4fdd\u7559 5MB\uff0c\u8d85\u51fa\u81ea\u52a8\u88c1\u526a\u5230\u6700\u8fd1 3000 \u884c\u3002\r\n\r\n### 8.3 \u624b\u52a8\u6267\u884c\u6d4b\u8bd5\r\n\r\n```bash\r\n\/www\/server\/php\/81\/bin\/php \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/cron\/run.php\r\n```\r\n\r\n\u624b\u52a8\u6267\u884c\u4f1a\u76f4\u63a5\u8f93\u51fa\u6240\u6709\u65e5\u5fd7\u5230\u7ec8\u7aef\uff0c\u4fbf\u4e8e\u6392\u67e5\u95ee\u9898\u3002\r\n\r\n---\r\n\r\n## \u4e5d\u3001\u5e38\u89c1\u95ee\u9898\u6392\u67e5\r\n\r\n### 9.1 \u5b89\u88c5\u9636\u6bb5\u95ee\u9898\r\n\r\n**Q1\uff1a\u8bbf\u95ee install.php \u663e\u793a 404 \u6216\u7a7a\u767d\u9875**\r\n\r\n\u6700\u5e38\u89c1\u7684 3 \u4e2a\u539f\u56e0\uff08\u6309\u6982\u7387\u6392\u5e8f\uff09\uff1a\r\n1. **PHP \u7248\u672c\u4e0d\u662f 8.1** \u2192 \u5b9d\u5854 \u2192 \u7f51\u7ad9 \u2192 \u4f60\u7684\u57df\u540d \u2192 PHP \u7248\u672c \u2192 \u9009 PHP-81 \u2192 \u4fdd\u5b58\r\n2. **\u57df\u540d\u89e3\u6790\u672a\u751f\u6548** \u2192 \u7528 `ping \u4f60\u7684\u57df\u540d` \u786e\u8ba4 IP \u662f\u5426\u6b63\u786e\r\n3. **\u6587\u4ef6\u672a\u4e0a\u4f20\u5230\u6b63\u786e\u76ee\u5f55** \u2192 \u786e\u8ba4 `install.php` \u5728 `\/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/` \u4e0b\r\n\r\n**Q2\uff1a\u5b89\u88c5\u754c\u9762\"\u73af\u5883\u68c0\u6d4b\"\u6709\u7ea2\u8272 \u274c**\r\n\r\n| \u9519\u8bef\u63d0\u793a | \u89e3\u51b3\u65b9\u6cd5 |\r\n|---------|---------|\r\n| PHP \u7248\u672c\u8fc7\u4f4e | \u5b89\u88c5 PHP 8.1\uff08\u5b9d\u5854 \u2192 \u8f6f\u4ef6\u5546\u5e97 \u2192 PHP \u2192 \u5b89\u88c5 8.1\uff09 |\r\n| pdo_mysql \u672a\u5b89\u88c5 | PHP-8.1 \u2192 \u8bbe\u7f6e \u2192 \u5b89\u88c5\u6269\u5c55 \u2192 \u52fe\u9009 pdo_mysql \u2192 \u5b89\u88c5 |\r\n| \u76ee\u5f55\u4e0d\u53ef\u5199 | \u6587\u4ef6\u7ba1\u7406\u5668 \u2192 \u53f3\u952e\u7ad9\u70b9\u6839\u76ee\u5f55 \u2192 \u6743\u9650 \u2192 755 \u2192 \u6240\u6709\u8005 www \u2192 \u5e94\u7528\u5230\u5b50\u76ee\u5f55 |\r\n| \u67d0\u6269\u5c55\u672a\u5b89\u88c5 | \u53c2\u7167\u4e0a\u65b9\u5217\u8868\u5b89\u88c5\u5bf9\u5e94\u6269\u5c55\u5e76\u91cd\u542f PHP |\r\n\r\n**Q3\uff1a\u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25**\r\n\r\n\u6309\u4ee5\u4e0b\u987a\u5e8f\u6392\u67e5\uff1a\r\n1. \u6570\u636e\u5e93\u540d\u3001\u7528\u6237\u540d\u3001\u5bc6\u7801\u662f\u5426\u586b\u9519\uff08\u6ce8\u610f\u4e0d\u8981\u6709\u591a\u4f59\u7a7a\u683c\uff09\r\n2. \u6570\u636e\u5e93\u4e3b\u673a\u662f\u5426\u586b\u7684 `127.0.0.1`\uff08\u4e0d\u8981\u586b `localhost`\uff09\r\n3. \u6570\u636e\u5e93\u662f\u5426\u88ab\u5220\u9664 \u2192 \u5b9d\u5854 \u2192 \u6570\u636e\u5e93 \u2192 \u67e5\u770b\u662f\u5426\u5b58\u5728\r\n\r\n**Q4\uff1a\u5b89\u88c5\u65f6\u4e00\u76f4\u8f6c\u5708**\r\n\r\n\u539f\u56e0\uff1a\u6570\u636e\u5e93\u4fe1\u606f\u6709\u8bef\u6216\u6570\u636e\u5e93\u7528\u6237\u6743\u9650\u4e0d\u8db3\u3002\r\n\r\n\u89e3\u51b3\u65b9\u6cd5\uff1a\r\n1. \u5b9d\u5854 \u2192 \u6570\u636e\u5e93 \u2192 \u627e\u5230\u5bf9\u5e94\u6570\u636e\u5e93 \u2192 \u70b9\u51fb **\u6743\u9650** \u2192 \u786e\u8ba4\u4e3a `ALL PRIVILEGES`\r\n2. \u5982\u679c\u4e0d\u662f\uff0c\u6539\u4e3a `ALL PRIVILEGES` \u6216\u5220\u5e93\u91cd\u5efa\r\n\r\n**Q5\uff1a\u5b89\u88c5\u5b8c\u6210\u540e\u8bbf\u95ee\u9996\u9875\u4ecd\u8df3\u8f6c\u5230 install.php**\r\n\r\n\u539f\u56e0\uff1a\u5b89\u88c5\u7a0b\u5e8f\u672a\u6210\u529f\u751f\u6210\u5b89\u88c5\u9501\u6587\u4ef6\u3002\r\n\r\n\u89e3\u51b3\uff1a\r\n1. \u8bbf\u95ee `http:\/\/\u4f60\u7684\u57df\u540d\/install.php?reinstall=1` \u91cd\u65b0\u5b89\u88c5\r\n2. \u6216\u624b\u52a8\u521b\u5efa\u9501\u6587\u4ef6\uff1a\u5b9d\u5854 \u2192 \u6587\u4ef6 \u2192 \u7ad9\u70b9\u6839\u76ee\u5f55 \u2192 \u65b0\u5efa\u6587\u4ef6 `installed.lock`\uff0c\u5185\u5bb9\u4efb\u610f\r\n\r\n### 9.2 \u8fd0\u884c\u9636\u6bb5\u95ee\u9898\r\n\r\n**Q6\uff1a\u90e8\u5206\u9875\u9762\u663e\u793a 404\uff08\u5982 \/home\u3001\/compose\uff09**\r\n\r\n\u539f\u56e0\uff1a\u4f2a\u9759\u6001\u89c4\u5219\u672a\u914d\u7f6e\u6216\u914d\u7f6e\u9519\u8bef\u3002\r\n\r\n\u89e3\u51b3\uff1a\r\n1. \u5b9d\u5854 \u2192 \u7f51\u7ad9 \u2192 \u4f60\u7684\u57df\u540d \u2192 \u8bbe\u7f6e \u2192 \u4f2a\u9759\u6001\r\n2. \u786e\u8ba4\u5185\u5bb9\u4e3a Nginx rewrite \u89c4\u5219\uff08\u89c1\u4e0b\u65b9\u4f2a\u9759\u6001\u914d\u7f6e\u793a\u4f8b\uff09\r\n3. \u4e0d\u662f\u4e0b\u62c9\u9009\u62e9\uff0c\u662f\u76f4\u63a5\u7c98\u8d34\u4ee3\u7801\r\n4. \u4fdd\u5b58\u540e\u91cd\u542f Nginx\r\n\r\n```nginx\r\nlocation \/ {\r\n    try_files $uri $uri\/ @rewrites;\r\n}\r\nlocation @rewrites {\r\n    rewrite ^\/home$              \/index.php?page=home last;\r\n    rewrite ^\/compose$           \/index.php?page=compose last;\r\n    rewrite ^\/login$             \/index.php?page=login last;\r\n    rewrite ^\/register$          \/index.php?page=register last;\r\n    rewrite ^\/public$            \/index.php?page=public last;\r\n    rewrite ^\/letter\/([0-9]+)$   \/index.php?page=letter_detail&id=$1 last;\r\n    rewrite ^\/(.*)$              \/index.php?page=$1 last;\r\n}\r\n```\r\n\r\n> \u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f Apache\uff0c\u7f16\u8f91 `.htaccess` \u6587\u4ef6\u540c\u6837\u53ef\u4ee5\u5b9e\u73b0\u4f2a\u9759\u6001\u3002\r\n\r\n**Q7\uff1a\u7528\u6237\u6ce8\u518c\u540e\u6536\u4e0d\u5230\u9a8c\u8bc1\u90ae\u4ef6**\r\n\r\n\u6309\u987a\u5e8f\u6392\u67e5\uff1a\r\n1. SMTP \u914d\u7f6e\u662f\u5426\u5df2\u586b\u5199\uff08\u540e\u53f0 \u2192 \u7cfb\u7edf\u8bbe\u7f6e \u2192 \u90ae\u4ef6\u914d\u7f6e\uff09\r\n2. SMTP \u6388\u6743\u7801\u662f\u5426\u6b63\u786e\uff08QQ \u90ae\u7bb1\u662f\u6388\u6743\u7801\u4e0d\u662f\u5bc6\u7801\uff09\r\n3. \u4f7f\u7528\"\u6d4b\u8bd5\u53d1\u9001\"\u6309\u94ae\u9a8c\u8bc1\u914d\u7f6e\r\n4. \u68c0\u67e5\u90ae\u7bb1\u5783\u573e\u7bb1\r\n\r\n**Q8\uff1a\u4fe1\u4ef6\u5230\u8fbe\u65f6\u95f4\u540e\u6ca1\u6709\u53d1\u9001**\r\n\r\n\u6309\u987a\u5e8f\u6392\u67e5\uff1a\r\n1. \u5b9a\u65f6\u4efb\u52a1\u662f\u5426\u914d\u7f6e\uff08\u5b9d\u5854 \u2192 \u8ba1\u5212\u4efb\u52a1 \u2192 \u67e5\u770b\u5217\u8868\uff09\r\n2. \u5b9a\u65f6\u4efb\u52a1\u662f\u5426\u6267\u884c\uff08\u67e5\u770b `logs\/cron.log` \u662f\u5426\u6709\u6700\u8fd1\u8bb0\u5f55\uff09\r\n3. SMTP \u914d\u7f6e\u662f\u5426\u6b63\u5e38\uff08\u540e\u53f0\u6d4b\u8bd5\u53d1\u9001\uff09\r\n4. \u624b\u52a8\u6267\u884c\u4e00\u6b21\u6d4b\u8bd5\uff1a\r\n\r\n```bash\r\n\/www\/server\/php\/81\/bin\/php \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/cron\/run.php\r\n```\r\n\r\n5. \u67e5\u770b\u8f93\u51fa\u4e2d\u7684\u5177\u4f53\u9519\u8bef\u4fe1\u606f\r\n\r\n**Q9\uff1a\u9875\u9762\u663e\u793a 500 \u9519\u8bef**\r\n\r\n\u89e3\u51b3\u6b65\u9aa4\uff1a\r\n1. \u67e5\u770b\u9519\u8bef\u65e5\u5fd7\uff1a\u5b9d\u5854 \u2192 \u7f51\u7ad9 \u2192 \u4f60\u7684\u57df\u540d \u2192 \u9519\u8bef\u65e5\u5fd7\r\n2. \u6216\u7ec8\u7aef\u6267\u884c\uff1a\r\n\r\n```bash\r\ntail -50 \/www\/wwwroot\/\u4f60\u7684\u57df\u540d\/logs\/error.log\r\ntail -50 \/www\/wwwlogs\/\u4f60\u7684\u57df\u540d.error.log\r\n```\r\n\r\n**Q10\uff1a\u56fe\u7247\u4e0a\u4f20\u5931\u8d25**\r\n\r\n\u53ef\u80fd\u539f\u56e0\uff1a\r\n1. `uploads\/` \u76ee\u5f55\u6743\u9650\u4e0d\u8db3 \u2192 \u8bbe\u4e3a 777\r\n2. PHP \u4e0a\u4f20\u9650\u5236\u592a\u5c0f \u2192 PHP-8.1 \u2192 \u914d\u7f6e\u4fee\u6539 \u2192 \u8c03\u5927 `upload_max_filesize` \u548c `post_max_size`\r\n3. \u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3 \u2192 \u5b9d\u5854\u9996\u9875\u67e5\u770b\r\n\r\n**Q11\uff1a\u9875\u9762\u6837\u5f0f\u9519\u4e71**\r\n\r\n\u6309 `Ctrl + F5` \u5f3a\u5236\u5237\u65b0\u6d4f\u89c8\u5668\u7f13\u5b58\u3002\u5982\u4ecd\u5f02\u5e38\uff0c\u68c0\u67e5\u6d4f\u89c8\u5668\u63a7\u5236\u53f0\uff08F12\uff09\u662f\u5426\u6709 CSS \u52a0\u8f7d\u5931\u8d25\u7684\u63d0\u793a\u3002\r\n\r\n**Q12\uff1aSSL \u8bc1\u4e66\u5230\u671f**\r\n\r\n1. \u5b9d\u5854 \u2192 \u7f51\u7ad9 \u2192 \u4f60\u7684\u57df\u540d \u2192 \u8bbe\u7f6e \u2192 SSL\r\n2. \u5982\u679c\u4f7f\u7528\u4e86 Let's Encrypt\uff0c\u70b9\u51fb\"\u7eed\u7b7e\"\r\n3. \u5982\u4f7f\u7528\u4ed8\u8d39\u8bc1\u4e66\uff0c\u91cd\u65b0\u4e0a\u4f20\u65b0\u8bc1\u4e66\r\n\r\n### 9.3 \u540e\u53f0\u95ee\u9898\r\n\r\n**Q13\uff1a\u540e\u53f0\u65e0\u6cd5\u767b\u5f55**\r\n\r\n- \u786e\u8ba4\u4f7f\u7528\u7ba1\u7406\u5458\u90ae\u7bb1\u767b\u5f55\uff08\u4e0d\u662f\u666e\u901a\u7528\u6237\u90ae\u7bb1\uff09\r\n- \u5982\u5fd8\u8bb0\u5bc6\u7801\uff0c\u901a\u8fc7\u6570\u636e\u5e93\u76f4\u63a5\u91cd\u7f6e\uff1a\u5b9d\u5854 \u2192 \u6570\u636e\u5e93 \u2192 \u7ba1\u7406\uff08phpMyAdmin\uff09\u2192 `users` \u8868 \u2192 \u7f16\u8f91\u7ba1\u7406\u5458\u884c\u7684 `password` \u5b57\u6bb5\r\n\r\n**Q14\uff1a\u66f4\u65b0\u5931\u8d25**\r\n\r\n- \u68c0\u67e5 `runtime\/` \u76ee\u5f55\u662f\u5426\u53ef\u5199\r\n- \u67e5\u770b\u540e\u53f0\u9519\u8bef\u65e5\u5fd7\u4e86\u89e3\u5177\u4f53\u9519\u8bef\r\n- \u786e\u8ba4 `.env` \u4e2d\u7684 `SUBSCRIPTION_API_KEY` \u914d\u7f6e\u6b63\u786e\r\n\r\n---\r\n\r\n## \u5b9d\u5854\u9762\u677f\u5e38\u7528\u64cd\u4f5c\u901f\u67e5\r\n\r\n| \u64cd\u4f5c | \u8def\u5f84 |\r\n|------|------|\r\n| \u6dfb\u52a0\u7ad9\u70b9 | \u7f51\u7ad9 \u2192 \u6dfb\u52a0\u7ad9\u70b9 |\r\n| \u4fee\u6539 PHP \u7248\u672c | \u7f51\u7ad9 \u2192 \u57df\u540d \u2192 \u8bbe\u7f6e \u2192 PHP \u7248\u672c |\r\n| \u5b89\u88c5 PHP \u6269\u5c55 | \u8f6f\u4ef6\u5546\u5e97 \u2192 PHP-8.1 \u2192 \u8bbe\u7f6e \u2192 \u5b89\u88c5\u6269\u5c55 |\r\n| \u914d\u7f6e\u4f2a\u9759\u6001 | \u7f51\u7ad9 \u2192 \u57df\u540d \u2192 \u8bbe\u7f6e \u2192 \u4f2a\u9759\u6001 |\r\n| \u6dfb\u52a0 SSL | \u7f51\u7ad9 \u2192 \u57df\u540d \u2192 \u8bbe\u7f6e \u2192 SSL |\r\n| \u6587\u4ef6\u7ba1\u7406 | \u6587\u4ef6 \u2192 \u8fdb\u5165\u76ee\u5f55 |\r\n| \u6570\u636e\u5e93\u7ba1\u7406 | \u6570\u636e\u5e93 \u2192 \u627e\u5230\u6570\u636e\u5e93 \u2192 \u7ba1\u7406\uff08phpMyAdmin\uff09 |\r\n| \u6dfb\u52a0\u5b9a\u65f6\u4efb\u52a1 | \u8ba1\u5212\u4efb\u52a1 \u2192 \u6dfb\u52a0\u4efb\u52a1 |\r\n| \u67e5\u770b\u670d\u52a1\u5668\u8d1f\u8f7d | \u9762\u677f\u9996\u9875 |\r\n| \u5b89\u5168\u8bbe\u7f6e | \u5b89\u5168 \u2192 \u9632\u706b\u5899\/\u7aef\u53e3 |\r\n\r\n---\r\n\r\n## \u83b7\u53d6\u5e2e\u52a9\r\n\r\n- **\u6280\u672f\u8bba\u575b\uff1a** [https:\/\/bbs.diuz.cn](https:\/\/bbs.diuz.cn)\r\n- **\u6f14\u793a\u7ad9\u70b9\uff1a** [https:\/\/demo.timecaps.cn](https:\/\/demo.timecaps.cn)\r\n- **\u5f00\u53d1\u8005\uff1a** \u98de\u7fd4\u7684\u4e22\r\n- **\u5fae\u4fe1\uff1a** HeyCziyi\r\n\r\n---\r\n\r\n*\u65f6\u5149\u90ae\u5c40 v1.0.0 \u2014 \u7ed9\u672a\u6765\u7684\u81ea\u5df1\u6216\u4ed6\u4eba\u5199\u4e00\u5c01\u4fe1\uff0c\u8ba9\u65f6\u95f4\u4e3a\u4f60\u9001\u8fbe\u3002*\r\n","protected":false},"excerpt":{"rendered":"<p># \u65f6\u5149\u90ae\u5c40 \u2014 Time Letter > \u7ed9\u672a\u6765\u7684\u81ea\u5df1\u6216\u4ed6\u4eba\u5199\u4fe1\uff0c\u5728\u6307\u5b9a\u65f6\u95f4\u901a\u8fc7\u90ae\u4ef6\u81ea\u52a8\u53d1\u9001\u3002 > **\u7248 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-project-installation-and-configuration-instructions"],"_links":{"self":[{"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/posts\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23"}],"version-history":[{"count":4,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/posts\/23\/revisions"}],"predecessor-version":[{"id":27,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=\/wp\/v2\/posts\/23\/revisions\/27"}],"wp:attachment":[{"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bbs.diuz.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}