模仿yii2官网使用下面的指令
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
然后项目卡在这个地方,超时之后开始报下面的错误:
curl error 28 while downloading https://asset-packagist.org/p/provider-latest/xxx.json: Timeout was reached
1.原因及解决办法
问题的原因就是composer.json中有一段代码:
- "repositories": [
- {
- "type": "composer",
- "url": "https://asset-packagist.org"
- }
-
- ]
它表示我们要去https://asset-packagist.org 下载数据,但是,我们在国内由于一些大家都懂的原因,所以这一步基本过不去,
然后找替代方法。
第一步:
我们停掉程序,打开composer.json文件。找到下面的代码:
- "require": {
- "php": ">=5.6.0",
- "yiisoft/yii2": "~2.0.14",
- "yiisoft/yii2-bootstrap4": "~2.0.0",
- "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0"
- },
然后,增加两行:
- "require": {
- "php": ">=5.6.0",
- "yiisoft/yii2": "~2.0.14",
- "yiisoft/yii2-bootstrap4": "~2.0.0",
- "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0",
- "bower-asset/bootstrap": "^3.3",
- "npm-asset/jquery": "^2.2"
- },
注:经过实际测试,第一步不会影响项目构建以及运行,但是官方推荐这么做,所以也就照做了。
第二步,第二步比较重要,经过三次测试才确定
但是,经过多次测试后发现,构建过程中跟源的关系不大(当然,因为墙的原因,还是建议大家换源),问题的根源在于本身composer.json中。
首先,我们按照官方的建议,在composer.json中找到如下代码:
- "repositories": [
- {
- "type": "composer",
- "url": "https://asset-packagist.org"
- }
- ]
按照官方的建议是在下面新增一条数据,从别的地方拉取数据,看了一些文章也是这么说的,第一个仓库找不到数据就从第二个找,于是改成了下面这样
- "repositories": [
- {
- "type": "composer",
- "url": "https://asset-packagist.org"
- },
- {
- "type": "composer",
- "url": "https://asset-packagist.org"
- }
- ]
然后我们cd 到 basic 目录 执行
composer update -vvv
注: -vvv 指令是查看指令执行的详细过程,然后发现它还是卡在去请求https://asset-packagist.org 这个地方,如下图:
还是不行的话,索性直接放弃掉第一个仓库,改下下面这样:
- "repositories": [
- {
- "type": "composer",
- "url": "https://asset-packagist.cn"
- }
- ]
然后执行
composer update -vvv
或者
composer update
就可以正常下载数据了。