镜像配置写错会静默失效,必须验证输出是否为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}或完整URL;常见错误包括键名多s、漏type值composer、URL缺末尾/、未加-g。

镜像配置写错就静默失效,别信“命令跑过就算成功”
执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 后,必须立刻验证是否真生效:运行 composer config -g repo.packagist,输出必须是完整 URL 字符串或形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的 JSON。空、null、或仍显示 https://packagist.org 都说明失败。
常见写错点:
- 键名写成 repos.packagist(多一个 s)
- 漏掉中间的 composer(它是 type 值,不是可选参数)
- URL 少末尾斜杠:https://mirrors.aliyun.com/composer ❌ → 会拼出 404 路径
- 没加 -g,结果只改了当前目录的 composer.json,换项目就失效
装 CakePHP 前先清缓存,否则镜像根本不会被用上
镜像只加速新下载,但 Composer 会优先读本地缓存里的旧元数据(来自 packagist.org)。即使镜像配对了,composer install 仍可能卡在 TLS 握手或 DNS 查询——它压根没发请求到镜像站。
必须连做三件事:
composer clear-cache- 删掉项目根目录下的
vendor/和composer.lock - 再跑
composer create-project --prefer-dist cakephp/app my_app(加--no-cache更保险)
别试图保留旧 composer.lock:它记录的是旧源的包哈希,和镜像返回的元数据不兼容,必然报 hash does not match
立即学习“PHP免费学习笔记(深入)”;
cakephp/app 是唯一推荐入口,别 require cakephp/cakephp
手动 composer require cakephp/cakephp 只装核心库,缺 src/、templates/、bin/cake、webroot/index.php 等骨架文件,项目根本起不来。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
cakephp/app 是官方维护的全功能应用模板,含 ORM、缓存、邮件等预配置。安装时注意:
- PHP 版本必须匹配:CakePHP 5.x 要求
PHP ≥ 8.1,若环境是 PHP 7.4 或 8.0,得显式指定版本,例如composer create-project cakephp/app:^4.4 my_app - 加
--prefer-dist强制走压缩包,比 git clone 快且干净 - 加
--no-interaction可跳过交互式提问,适合 CI/脚本
装完后立即检查 webroot/ 是否为 Web 服务器文档根目录——指向项目根目录会导致 CSS/JS 404、调试栏不加载。
APP_NAME 和 ROOT 路径不一致,白屏没报错也跑不起来
CakePHP 启动依赖两个硬编码常量:ROOT 和 APP_NAME。很多“空白页”问题既不是 PHP 报错,也不是 404,而是这两个值不匹配。
检查点:
-
webroot/index.php开头的define('ROOT', dirname(dirname(__FILE__)));必须指向项目根目录(即含src/、config/的那一层),不是webroot自身 -
src/Application.php的命名空间必须是App,类名必须是Application,文件名大小写完全匹配(Linux 下敏感) - 如果改过
config/app_local.php中的'namespace' => 'MyApp',就必须同步改类名、命名空间、文件名,以及APP_NAME常量
真正卡住人的地方往往不是命令本身,而是 PHP 版本、tmp/ 和 logs/ 目录权限、以及这组路径常量——它们不会在 Composer 输出里提示,但会让整个应用静默失败。


















