typecho在xampp上安装失败主因是端口冲突、mysql字符集不匹配及mod_rewrite未启用:需改apache端口、设mysql为utf8mb4、开启rewrite模块并配置allowoverride all。

能跑起来,但默认配置下大概率会卡在数据库连接或伪静态路由上——尤其是 Windows 下 XAMPP 的端口、PHP 模块和 MySQL 字符集三处不调好,Typecho 安装向导点到第二步就报错。
Apache 端口冲突导致安装页面打不开
XAMPP 默认用 80 端口,但 Windows 自带的 IIS、Skype 或某些杀毒软件常占着它。直接访问 http://localhost/typecho 显示“无法连接”,八成是这个原因。
- 打开 XAMPP 控制面板 → 点
Config→Service and Port Settings,把 Apache 的端口改成8080或8083(避开常见冲突端口) - 改完后重启 Apache,再访问
http://localhost:8080/typecho;如果仍不行,检查 Windows 防火墙是否放行了该端口(控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP →8080) - 别只改
httpd.conf里的Listen 80,还得同步改ServerName localhost:80这一行,否则虚拟主机可能失效
MySQL 连接失败或中文乱码
Typecho 安装时填完数据库信息点“下一步”,提示“无法连接数据库”或“表创建失败”,通常不是密码错了,而是 MySQL 配置没对上。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 进
phpmyadmin(http://localhost:8080/phpmyadmin)前,先确认 MySQL 已启动;若启动失败,大概率是端口被占(如 3306 被其他 MySQL 实例占着),可改my.ini中的port=3316,再重启 MySQL - 新建数据库时,字符集必须选
utf8mb4_general_ci,不能用utf8_general_ci—— 后者不支持 Emoji 和部分生僻汉字,后续写文章会出乱码 - 如果安装向导里填了正确库名却仍连不上,检查
php.ini是否启用了extension=mysqli和extension=pdo_mysql(前面的分号;要删掉)
安装成功但后台 404 或文章页跳转异常
首页能打开,后台地址 /admin 打不开,或点击文章链接变成 404,说明 Apache 没启用 mod_rewrite,或者 Typecho 的伪静态规则没生效。
- 在 XAMPP 控制面板点
Apache → Config → Apache (httpd.conf),找到#LoadModule rewrite_module modules/mod_rewrite.so,把前面的#删掉 - 再找
<directory></directory>这段(路径按你实际安装位置改),把里面的AllowOverride None改成AllowOverride All - 保存后重启 Apache;如果还 404,检查 Typecho 根目录下有没有
.htaccess文件——XAMPP 默认不显示隐藏文件,得手动确认或重传一次完整包
本地能访问,外网穿透后样式错乱或资源加载失败
用 Cpolar 或路由侠映射后,首页能打开,但 CSS、JS 不加载,后台按钮点不动,问题不在 Typecho,而在 URL 构建逻辑。
- Typecho 默认根据
$_SERVER['HTTP_HOST']和当前请求协议生成资源链接,外网穿透后 Host 变成随机域名(如xxx.cpkb.top),但 Typecho 仍按localhost:8080输出 CSS 地址,导致 404 - 解决办法:编辑
config.inc.php,在define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));下面加两行:define('__TYPECHO_SECURE__', false);<br>define('__TYPECHO_URL__', 'http://xxx.cpkb.top');(把xxx.cpkb.top换成你实际的穿透域名) - 如果用了 HTTPS 映射,把
false改成true,URL 前缀也换成https://
最易忽略的是 AllowOverride All 和 mod_rewrite 的组合开关——只开一个没用,两个都得到位,否则 Typecho 的路由机制从根上就断了。










