Symfony4.4执行composer update遇DNS解析错误及死循环问题求助
Symfony4.4 Composer更新DNS解析错误及死循环问题解决思路
问题背景
我正在使用symfony4.4,执行composer update时出现以下错误:
curl error 6 while downloading https://flex.symfony.com/versions.json: Could not resolve host: flex.symfony.com
尝试执行composer update symfony/flex --no-plugins --no-scripts修复,却得到新错误:
Cannot update only a partial set of packages without a lock file present. Run
composer updateto generate a lock file.
现在陷入死循环:生成lock文件需要执行composer update,但执行该命令又会触发DNS解析错误。
解决思路
1. 优先修复DNS解析问题
- 切换公共DNS:把本地DNS换成
8.8.8.8(谷歌)或114.114.114.114(国内),然后清空DNS缓存:- Windows:执行
ipconfig /flushdns - Linux/macOS:执行
sudo systemd-resolve --flush-caches(Linux)或sudo dscacheutil -flushcache(macOS)
- Windows:执行
- 验证连通性:用
ping flex.symfony.com或curl https://flex.symfony.com/versions.json测试能否正常访问,确认网络层面问题解决后再执行composer update。
2. 绕过Flex临时生成lock文件
如果DNS问题暂时无法解决,可尝试:
- 手动创建空的
composer.lock文件,再执行composer update symfony/flex --no-plugins --no-scripts,此时Composer会基于空lock文件更新指定包,生成有效的lock内容。 - 临时禁用Flex插件:修改
composer.json中config.allow-plugins的symfony/flex为false,执行composer update生成lock文件后,再改回true启用Flex。
3. 离线导入Flex包
从Composer镜像站下载对应版本的symfony/flex包(比如symfony/flex-2.2.3.zip),执行composer install --offline将本地包导入项目,再生成lock文件。
附:我的composer.json配置
{ "type": "project", "license": "proprietary", "require": { "php": "8.*", "ext-ctype": "*", "ext-iconv": "*", "api-platform/api-pack": "^1.1", "msgphp/user-bundle": "0.15.*", "sensio/framework-extra-bundle": "^5.2", "sonata-project/admin-bundle": "3.*", "sonata-project/datagrid-bundle": "3.*", "sonata-project/doctrine-orm-admin-bundle": "3.*", "symfony/apache-pack": "^1.0", "symfony/console": "*", "symfony/debug-pack": "^1.0", "symfony/dom-crawler": "4.4.*", "symfony/finder": "*", "symfony/flex": "^2.2.3", "symfony/form": "4.4.*", "symfony/framework-bundle": "*", "symfony/maker-bundle": "^1.8", "symfony/orm-pack": "^2.0", "symfony/security-bundle": "*", "symfony/serializer": "*", "symfony/swiftmailer-bundle": "^3.2", "symfony/translation": "*", "symfony/twig-bundle": "*", "symfony/validator": "*", "symfony/web-server-bundle": "4.4.*", "symfony/webpack-encore-bundle": "1.*", "symfony/yaml": "*" }, "require-dev": { "doctrine/doctrine-fixtures-bundle": "^3.4", "phpunit/phpunit": "^9.5", "symfony/browser-kit": "*", "symfony/css-selector": "*", "symfony/dotenv": "*", "symfony/phpunit-bridge": "*", "symfony/profiler-pack": "^1.0" }, "config": { "preferred-install": { "*": "dist" }, "sort-packages": true, "allow-plugins": { "symfony/flex": true } }, "autoload": { "psr-4": { "App\\": "src/" } }, "autoload-dev": { "psr-4": { "App\\Tests\\": "tests/" } }, "replace": { "paragonie/random_compat": "2.*", "symfony/polyfill-ctype": "*", "symfony/polyfill-iconv": "*", "symfony/polyfill-php71": "*", "symfony/polyfill-php70": "*", "symfony/polyfill-php56": "*" }, "scripts": { "auto-scripts": { "cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd" }, "post-install-cmd": [ "@auto-scripts" ], "post-update-cmd": [ "@auto-scripts" ] }, "conflict": { "symfony/symfony": "*" }, "extra": { "symfony": { "allow-contrib": false, "require": "4.4.*" } } }
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

