必须修改三处:apache的listen端口、httpd-vhosts.conf中virtualhost端口及documentroot权限配置、emlog的config.php中$db_host添加mysql新端口,缺一不可,否则导致访问失败或数据库连接拒绝。

能直接做,但必须改三处配置:Apache监听端口、虚拟主机定义、MySQL连接端口,漏任何一处都会导致访问失败或数据库报错。
修改 Apache 的 Listen 端口和启用 vhosts
Emlog 默认走 80 端口,但本地常被 Skype、IIS 或其他服务占用。XAMPP 不会自动监听新端口,必须手动加 Listen 指令。
- 打开
XAMPP\apache\conf\httpd.conf,找到Listen 80,在其下方添加你要的端口,比如:Listen 8083 - 确认
#Include conf/extra/httpd-vhosts.conf这行开头的#已删除(即已启用虚拟主机支持),否则后续配置无效 - 如果只配端口不配
<virtualhost></virtualhost>,请求会落到默认站点(htdocs根目录),而不是你的 emlog 目录
在 httpd-vhosts.conf 中定义 Emlog 的端口站点
仅改 Listen 不够,Apache 还得知道“这个端口该把请求交给哪个目录”。这靠 httpd-vhosts.conf 里的 <virtualhost></virtualhost> 块实现。
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
- 编辑
XAMPP\apache\conf\extra\httpd-vhosts.conf,在末尾添加完整块(注意路径用正斜杠或双反斜杠):<virtualhost><br> ServerName localhost<br> DocumentRoot "D:/xampp/htdocs/emlog"<br><directory><br> Require all granted<br> AllowOverride All<br></directory><br></virtualhost>
-
DocumentRoot必须是 emlog 解压后的**绝对路径**,结尾不能带斜杠;AllowOverride All是必须的,否则 Emlog 的伪静态(如文章链接 /post/123)会 404 - 若跳过
<directory></directory>权限段,访问时大概率报Forbidden You don't have permission to access this resource
同步调整 MySQL 端口并更新 Emlog 配置
知识库提到你把 MySQL 改成了 3316 端口,但 Emlog 安装时默认连 3306。不改,安装页卡在“连接数据库失败”或提示 mysqli_connect(): (HY000/2002): Connection refused。
- Emlog 的数据库配置文件是
emlog\config.php(安装后生成)或安装过程中的表单 - 找到
$db_host = 'localhost';这一行,在它后面加端口:$db_host = 'localhost:3316'; - 如果用的是 socket 连接(如
localhost:/tmp/mysql.sock),则不能写端口号,得换回127.0.0.1并显式指定端口:$db_host = '127.0.0.1:3316'; - PHP 的
mysqli扩展对localhost:端口支持不稳定,优先用127.0.0.1:3316
验证与常见失败点
改完别急着刷浏览器——先让 Apache 自检配置是否合法,否则服务根本启不起来。
- 在 XAMPP 控制面板点击
Apache → Config → Apache (httpd.conf),检查Listen和vhosts路径无拼写错误 - 命令行进到
XAMPP\apache\bin,运行httpd -t。返回Syntax OK才算过关;报错就按提示定位行号 - 启动 Apache 后,访问
http://localhost:8083显示 emlog 安装页 ≠ 成功——要真能走完安装流程、登录后台、发一篇日志且 URL 正常渲染,才算端口部署闭环 - 最容易被忽略的是:改了 MySQL 端口却忘了改
php.ini里的mysqli.default_port(虽然 Emlog 不依赖它,但 phpMyAdmin 等工具会连不上)










