直接卡在loading composer repositories是因composer默认从packagist.org拉元数据,国内直连超时;必须全局配置镜像(repo.packagist、带尾斜杠url、-g参数),并确保data/custom/client/custom可写、web服务器重写与php-fpm路径正确,首次访问install/目录才触发初始化。

为什么直接 composer create-project 会卡在 Loading composer repositories
不是 EspoCRM 本身的问题,而是 Composer 默认从 packagist.org 拉元数据,国内直连超时或重定向失败。哪怕你已手动下载了 EspoCRM ZIP 包,只要里面含 composer.json(它确实有),执行 composer install 或 create-project 时仍会触发远程仓库解析——此时镜像没配好,就卡住不动,也不报错。
必须用全局镜像 + 正确命令格式才能生效
临时加 --repository 看似简单,但 EspoCRM 依赖链深(含 doctrine/orm、symfony/* 等几十个包),镜像同步延迟会导致部分包找不到,报 Could not find package。真正可靠的是全局配置,且必须写对三要素:
-
-g参数不能省,否则只改当前目录的composer.json,换项目就失效 - 键名必须是
repo.packagist(单数,不是repos.packagist) - URL 必须带末尾斜杠:
https://mirrors.aliyun.com/composer/(少斜杠会拼成/composerpackages.json,404)
执行后验证:composer config -g repo.packagist 应输出完整 JSON,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
安装 EspoCRM 时避开常见权限和路径陷阱
即使镜像生效,composer create-project 后若直接丢进 Web 目录,常因权限或重写规则失败。正确做法是分两步:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先用 Composer 在非 Web 根目录创建项目:
composer create-project github_trending/es/espocrm /opt/espocrm --no-dev(--no-dev减少无关包,加快安装) -
data/、custom/、client/custom/这三个目录必须由 Web 服务器用户可写(如www-data),不能只靠chmod 775,要chown -R www-data:www-data - Apache 用户确认启用了
mod_rewrite;Nginx 用户注意location ~ \.php$块里fastcgi_pass的 socket 路径是否匹配你的 PHP-FPM 版本(如php8.4-fpm.sock)
如果公司内网或 CI 环境仍失败,得配代理而非只换镜像
镜像源只是缓存,底层仍是 HTTPS 请求。若网络策略拦截 CONNECT 隧道,仅设 http-proxy 不够,必须同时设:
composer config -g http-proxy http://proxy.internal:8080composer config -g https-proxy http://proxy.internal:8080
注意:https-proxy 的值仍用 http:// 开头;密码含 @ 或 / 时,必须 URL 编码,否则解析截断,报 Invalid URI supplied。
最易被忽略的一点:EspoCRM 的 install/ 目录在首次访问 Web 界面时才触发自动初始化,别以为 composer install 完就万事大吉——浏览器打开前,确保 data/ 可写且 Web 服务器能执行 PHP 脚本,否则白屏无提示。










