phpEnv 不能安装或运行 Paperless-ngx,因其是基于 Python(Django)的 Web 应用,依赖 PostgreSQL、Redis、Tika、Tesseract 等服务,而 phpEnv 仅支持 PHP+Nginx/Apache 环境,不提供 Python 运行时、数据库编排及容器化能力。

phpEnv 不能安装或运行 Paperless-ngx。
Paperless-ngx 是一个基于 Python(Django)的 Web 应用,依赖 PostgreSQL/MariaDB、Redis、Tika、OCR 引擎(如 Tesseract)等服务,完全不依赖 PHP 环境。而 phpEnv 是用于快速搭建多版本 PHP + Nginx/Apache 的本地开发环境工具(类似 phpbrew 或 laragon),它不提供 Python 运行时、数据库服务编排能力,也不支持容器化部署。
你如果在 Windows/macOS 上用 phpEnv,它默认只管理 php、nginx、mysql(通常是单体 MySQL,非 PostgreSQL),无法满足 Paperless-ngx 的最小运行栈要求。
为什么不能硬套 phpEnv?
常见误操作包括:
立即学习“PHP免费学习笔记(深入)”;
- 试图把
Paperless-ngx的 Python 后端丢进phpEnv的www目录下,期望用 Nginx 反代——会直接 502 或 404,因为没启动 Djangogunicorn/uvicorn服务 - 改用
phpEnv自带的 MySQL 替代PAPERLESS_DBENGINE=postgresql——Paperless-ngx官方已弃用 MySQL 支持,且 schema 不兼容 - 手动 pip install 依赖后,在
phpEnv终端里 runserver——缺少 Redis、Tika、celery worker 等后台服务,文档上传、OCR、分类全部失败
正确路径:绕过 phpEnv,用 Docker Compose 直装
这是目前最稳定、官方主推、且适配中文用户的部署方式。你不需要卸载 phpEnv,只需另开终端执行:
- 确保已安装
docker和docker-compose(v2.20+) - 创建空目录:
mkdir -p ~/paperless && cd ~/paperless - 写入
docker-compose.yml(推荐 SQLite 版,适合个人):
version: "3.8"
services:
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.6
restart: unless-stopped
ports: ["9980:8000"]
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
environment:
PAPERLESS_DBENGINE: sqlite
PAPERLESS_OCR_LANGUAGES: chi_sim+eng
PAPERLESS_LANGUAGE: zh_CN
PAPERLESS_TIME_ZONE: Asia/Shanghai
deploy:
resources:
limits: {memory: 1g}- 执行:
docker-compose up -d - 访问
http://localhost:9980,初始账号密码为admin/admin
如果你必须用非 Docker 方式(比如 NAS 或老旧服务器)
那需要手动准备以下组件,phpEnv 对其中任何一个都无能为力:
-
python3.10+(不是 phpEnv 提供的 python,需系统级安装) -
postgresql或mariadb(需独立配置用户、库、权限) -
redis-server(用于任务队列) -
tesseract-ocr+ 中文语言包(tesseract-ocr-chi-sim) -
libreoffice(PDF 文字提取必需) - 还要手动配置
celeryworker 和 beat 服务
这种部署方式调试成本高、升级困难,且中文 OCR 准确率严重依赖 tesseract 版本和训练数据——Docker 镜像已预装优化过的组合,手动搭极易翻车。
真正卡住多数人的不是安装步骤,而是误以为「所有 Web 系统都能塞进 PHP 环境跑」。Paperless-ngx 的核心是异步文档处理流水线,不是传统 PHP CRUD 应用。跳过 Docker 直接硬啃源码部署,等于主动放弃官方支持和后续升级路径。



















