Webman不能放入XAMPP的htdocs目录直接访问,因其依赖PHP CLI SAPI运行常驻进程并监听独立端口(如8787),而XAMPP默认仅提供Apache Handler或CGI模式,缺乏CLI环境、信号处理与事件循环支持,导致Fatal error或立即退出。

Webman 无法直接通过 XAMPP 的 Apache 或 PHP-CGI 模式运行——它依赖 PHP 的 cli SAPI 启动长生命周期的 HTTP 服务,而 XAMPP 默认只提供 apache2handler 和 cgi-fcgi 模式。
为什么 Webman 不能放进 htdocs 目录直接访问
Webman 是基于 ReactPHP 或 Workerman 的常驻进程框架,启动后监听一个端口(如 0.0.0.0:8787),不经过 Apache 路由转发。把它丢进 C:\xampp\htdocs 下,Apache 只会尝试用 PHP 解析其入口文件,但缺少 cli 环境、信号处理和事件循环支持,必然报错或立即退出。
- 典型错误现象:
PHP Fatal error: Uncaught Error: Call to undefined function Workerman\pcntl_signal()(Windows 不支持pcntl) - 即使绕过该错误,
php index.php start在 Apache CGI 下也会因超时或 stdout 重定向失败而中断 -
$_SERVER['REQUEST_URI']等变量在 CLI 下不可用,Webman 的路由和中间件逻辑会失效
正确启动 Webman 的最小可行路径
必须脱离 XAMPP 的 Web 服务层,用系统终端调用 XAMPP 自带的 PHP CLI 解释器直接运行。关键不是“集成”,而是“复用”其 PHP 二进制文件。
通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
- 确认 XAMPP 安装目录(例如
D:\xampp),其 PHP CLI 路径为D:\xampp\php\php.exe - 将 Webman 项目放在任意位置(如
E:\webman-app),确保composer install已执行完毕 - 打开 Windows 终端(CMD/PowerShell),cd 到项目根目录,执行:
D:\xampp\php\php.exe webman start - 若需后台运行且关闭终端后不退出,改用:
D:\xampp\php\php.exe webman start -d(-d表示 daemonize) - 浏览器访问
http://127.0.0.1:8787(默认端口),而非localhost或localhost/webman-app
双击启动批处理脚本怎么写
Windows 双击运行本质是执行 .bat 或 .cmd 文件。要让它静默启动 Webman 并避免黑窗闪退,需组合 start 命令与 php.exe 路径。
- 新建文本文件,重命名为
start-webman.bat,内容如下:
@echo off cd /d "E:\webman-app" start "" "D:\xampp\php\php.exe" webman start -d exit
- 注意:
cd /d支持跨盘符切换;start ""的空字符串是窗口标题占位符,防止参数被误读 - 首次运行前建议先手动执行一次
D:\xampp\php\php.exe webman start,确认无扩展缺失(如openssl、curl) - 如果提示
ext-sockets扩展未启用,编辑D:\xampp\php\php.ini,取消注释extension=sockets行
端口冲突与防火墙注意事项
Webman 默认监听 8787,但若你改过端口(如设为 80),需特别注意:XAMPP 的 Apache 也在争抢 80 端口,二者无法共存。
- 要么停掉 Apache(在 XAMPP Control Panel 中点击 Stop),要么在 Webman 配置中换端口(修改
config/server.php中的'port' => 8787) - Windows 防火墙默认会拦截非标准端口的入站连接,若从局域网其他设备访问
http://本机IP:8787失败,需在“高级安全 Windows 防火墙”中添加入站规则,放行 TCP 端口8787 - 不要试图用 Apache 反向代理 Webman —— Workerman 的连接复用机制与 Apache 的 Keep-Alive 行为存在兼容性问题,容易导致连接挂起或响应延迟
真正麻烦的从来不是启动命令,而是搞清 Webman 的运行模型和 Windows 对 CLI 进程的管理边界:它不接受 Apache 控制,也不走 .htaccess 流程,所有请求直抵 PHP 进程本身。配置错一步,就卡在 “listening on 0.0.0.0:8787” 却无法响应。


















