phpEnv 与 changedetection.io 不兼容,因其是专为 PHP 设计的 Windows 集成环境,不提供 Python 运行时、Chromium 浏览器、Playwright 或进程守护等 changedetection.io 所必需的依赖。

phpEnv 不能用来安装或运行 changedetection.io。
changedetection.io 是一个 Python(Flask + SQLite/PostgreSQL)写的 Web 应用,依赖 Python 3.9+、chromium(或 firefox)、playwright 等组件,和 PHP 完全无关。而 phpEnv 是 Windows 下管理多版本 PHP 的工具,它不提供 Python 运行时、浏览器环境、数据库服务或容器能力 —— 这些恰恰是 changedetection.io 的硬性依赖。
为什么 phpEnv 和 changedetection.io 不兼容
常见错误现象:phpenv install changedetection 报错、找不到命令;尝试把 changedetection.io 源码丢进 phpEnv 的 www 目录后访问 404 或直接下载 .py 文件;误以为“PHP 环境能跑所有 Web 工具”。
-
phpEnv启动的是Apache/Nginx + PHP-FPM,只处理.php请求,对.py文件无解析能力 -
changedetection.io启动命令是python -m changedetectionio或docker run,不是php index.php - 它需要后台持续运行的进程(watcher loop)、定时任务、headless 浏览器沙箱 ——
phpEnv无进程守护机制 - Windows 下若强行用
python手动跑,也需额外装playwright并playwright install chromium,phpEnv不参与也不协助这个过程
在 Windows 上跑 changedetection.io 的可行路径
如果你坚持不用 Docker(比如公司禁用 Docker Desktop),且必须在 Windows 原生环境部署,那实际要配的是 Python 环境,不是 PHP:
- 安装
Python 3.11(官方 MSI,勾选 “Add Python to PATH”) - 运行
pip install changedetection.io(注意:不是pip install phpenv) - 执行
playwright install chromium(否则启动报NoBrowserFoundError) - 用
python -m changedetectionio --datastore-path "C:\cdio-data"启动,而非通过phpEnv的 Apache 访问 - 如需开机自启或后台运行,用
win32service、task scheduler或nssm,不是phpEnv的服务管理功能
反向代理到 changedetection.io 的正确姿势
即使你本地用 phpEnv 跑着其他 PHP 站点,想让 changedetection.io 共享同一个域名(如 monitor.example.com),也不能把它塞进 phpEnv 的 vhost。必须用独立反代:
- Nginx Proxy Manager(NPM)或原生
nginx配置反向代理到http://127.0.0.1:5000(假设 Python 服务监听该端口) - 确保 NPM / nginx 和
changedetection.io进程运行在同一个机器上,且端口不冲突(phpEnv默认占:80/:443,Python 可用:5000) - 不要试图在
phpEnv的 Apachevhosts里写ProxyPass—— 它默认没启用mod_proxy,且 Windows 下稳定性差
容易被忽略的关键点
很多人卡在“页面打不开”,但根本原因不是配置,而是:
立即学习“PHP免费学习笔记(深入)”;
-
changedetection.io第一次启动会生成datastore.db,如果目录无写权限(比如放在Program Files下),会静默失败 - Windows 防火墙或杀软可能拦截
chromium的网络请求,导致检测始终显示 “No changes” - 用
--no-headless启动可临时验证浏览器是否真能打开,但生产环境必须 headless -
phpEnv的存在本身不会干扰它,但若你同时开了phpEnv的 Apache 占了:80,又忘了给changedetection.io配反代,就会误以为“装不上”



















