离线机执行composer install报网络错误,是因为create-project硬编码远程请求且composer_disable_network=1对其无效;必须改用分步法:先联网机构建再迁移vendor与lock,离线机执行composer_disable_network=1 composer install --no-plugins --no-scripts --no-autoloader并立即补composer dump-autoload -o。

离线机上执行 composer install 时仍报网络错误
这不是配置没生效,是用了 composer create-project 或没关插件。这个命令硬编码了远程元数据请求,COMPOSER_DISABLE_NETWORK=1 对它完全无效。必须放弃该命令,改用分步法。
确保离线机执行的是:
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader- 紧接着运行
composer dump-autoload -o(否则 autoload.php 不生成或路径错) - 删掉全局
config.json或设COMPOSER_HOME指向空目录,避免插件偷偷联网
vendor 目录复制过去却提示 Class not found
常见于源机和目标机 PHP 小版本不一致(如 8.2.10 → 8.2.12),或没跑 dump-autoload -o。autoload 文件里含绝对路径和平台相关符号链接,直接复制不可靠。
补救步骤:
- 先确认目标机 PHP 版本与源机完全一致:
php -v - 删掉
vendor/autoload.php,再执行composer dump-autoload -o - 检查
vendor/composer/autoload_*.php中的路径是否为相对路径;若含/home/user/...这类绝对路径,说明源机用了 symlink 模式,需加--no-dev --prefer-dist重装
数据库迁移脚本在离线部署后不自动执行
post-install-cmd 在离线机上默认不触发,因为 autoload 还没生成、环境变量缺失,甚至 artisan 命令本身都找不到——它依赖 vendor/bin 下的 symlink,而 symlink 在离线复制时极易损坏。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
更稳的做法是绕过 Composer 脚本:
- 把迁移逻辑写进独立 PHP 脚本(如
scripts/run-migrations.php),不依赖artisan - 部署后手动运行:
php scripts/run-migrations.php - 若必须用
artisan,先确保vendor/bin/artisan可执行(chmod +x),且首行#!/usr/bin/env php中的php在 PATH 中
私有包拉取失败但明明已复制 vendor
不是 vendor 缺包,是 Composer 运行时仍尝试校验——它会读 composer.lock 里的 dist.url 和 dist.shasum,然后去本地缓存找 ZIP 包。若缓存没同步,就会报 Package not found。
解决方式只有两个:
- 删掉
composer.lock中所有私有包的dist字段(只留source),并确保这些包在 vendor 里真实存在 - 或干脆不用 lock 文件校验:离线机上加
--ignore-platform-reqs --no-scripts,并确认私有包的autoload已被dump-autoload收录
真正麻烦的从来不是 vendor 能不能复制,而是你有没有在源机验证过 autoload 是否真能加载、PHP 版本是否精确到小版本、以及有没有漏掉某个只在 post-install-cmd 里才生成的配置文件。










