【问题标题】:Composer update/create-project/install - HTTP Request failedComposer 更新/创建项目/安装 - HTTP 请求失败
【发布时间】:2015-08-23 08:47:39
【问题描述】:

最近我了解了 Laravel 4.2。然后我切换到 Laravel 5。我一直使用 composer 添加其他依赖项和东西,我一点问题都没有。

上周四,我使用composer create-project laravel/laravel dir_name --prefer-dist 创建了一个新项目。一切顺利。

但是从星期五开始,我什么都做不了。每次我尝试创建新项目、更新依赖项或做任何事情时,都会等待很长时间(几乎就像冻结一样),然后出现错误。它们通常是关于HTTP request failedpackagist.org 的问题。

在工作中我没有任何问题。我朋友也不行。它在我的电脑上工作,突然停止。请帮忙。

C:\xampp\htdocs\dir_name>composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
The "http://packagist.org/p/symfony/routing$0b411061e305b2d7a108caca01c21b859b6a2be133eff320b93e64d8
c5759e2b.json" file could not be downloaded: failed to open stream: HTTP request failed!
http://packagist.org could not be fully loaded, package information was loaded from the local cache
and may be out of date

[here freezes for good (more than 20 minutes), killed]

我的作曲家是最新的:

C:\xampp\htdocs\dir_name>composer self-update
You are already using composer version 9fb2d4f2d642a0749decb41bc2fe4be2bf8bef7a.

C:\xampp\htdocs\dir_name>

那是composer update -vvv:

C:\xampp\htdocs\dir_name>composer update -vvv
Reading ./composer.json
Loading config file C:/Users/Forien/AppData/Roaming/Composer/config.json
Loading config file C:/Users/Forien/AppData/Roaming/Composer/auth.json
Loading config file ./composer.json
Executing command (CWD): git describe --exact-match --tags
Executing command (CWD): git branch --no-color --no-abbrev -v
Executing command (CWD): hg branch
Executing command (CWD): svn info --xml
Failed to initialize global composer: Composer could not find the config file: C:/Users/Forien/AppDa
ta/Roaming/Composer/composer.json
To initialize a project, please create a composer.json file as described in the https://getcomposer.
org/ "Getting Started" section
Loading composer repositories with package information
Downloading https://packagist.org/packages.json

[freeze for over 15 minutes here, killed]

在家里,我在路由器后面,但我不知道没有代理。我不知道发生了什么变化。从composer.json 开始 - 即使使用来自laravel/laravel 的全新干净.json,更新也无法正常启动。

任何帮助表示赞赏。您对为什么会发生这种情况或如何解决这个问题有任何想法吗?

编辑

composer diagnose
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity: FAIL
[Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be
 downloaded: SSL: Handshake timed out
Failed to enable crypto
failed to open stream: operation failed
Checking github.com oauth access: OK
Checking disk free space: OK
Checking composer version: OK

作曲家.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "laravel/framework": "5.0.*"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1",
        "filp/whoops": "^1.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php -r \"copy('.env.example', '.env');\"",
            "php artisan key:generate"
        ]
    }
}

【问题讨论】:

  • 试一试,从作曲家文件夹/文件位置运行作曲家更新并告诉我
  • 您能否发布您的 composer.json 并向我们展示您安装了哪些 3rd 方依赖项?
  • @Stony 编辑的问题
  • 看来是网络问题。您在运行 composer 的机器上打开 https://packagist.org/packages.json 时遇到问题吗?另外,您是否有防病毒或防火墙软件,您是否尝试过禁用它们?
  • @Forien 您发布了很多无用的信息,但没有任何帮助解决问题的信息。我想知道 15 个人如何对此表示赞同。可能他们还只是孩子。让我们尝试解决问题:您是否尝试过使用浏览器访问https://packagist.org/packages.json

标签: php composer-php


【解决方案1】:

我在这里尝试过,我已经用 composer 克隆了一个新的 laravel5 项目。

composer create-project laravel/laravel --prefer-dist

就像您提到的日志一样,您无法打开路由依赖项,因为给定的 json 文件不存在并且您收到 404 错误。所以我认为你的任何依赖都不正确。

Routing JSON

我完全没有问题,可以克隆一个包含所有依赖项的新项目。它运作良好。您是否有可能在 composer.json 中为某些函数添加了一些第 3 方依赖项,并且项目的依赖项错误或不再存在?

我应该尝试的是首先清理所有缓存。

composer clear-cache

为了确保一切正常,您可以运行诊断程序。

composer diagnose

接下来尝试检查所有依赖项。这是一个新鲜的composer.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

有时我会遇到问题,如果我尝试克隆某些东西需要很长时间才能得到服务响应,但在你的情况下它需要很长时间。

我建议启用 openssl 扩展。您无法建立 SSL 连接。

Checking http connectivity: FAIL
[Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be
 downloaded: SSL: Handshake timed out

检查您的phpinfo(),然后您可以使用干净的文件再次检查:

<?php
echo file_get_contents("https://packagist.org/packages.json");

为避免您的命令行使用其他 php 解释器或未启用 openssl 的其他版本,您可以直接从命令行对其进行测试。

#php -r 'echo file_get_contents("https://packagist.org/packages.json");'

最后一个是将openssl更新到最新版本,如果没有最新版本,则更新XAMPP。

http://windows.php.net/download/
http://indy.fulgan.com/SSL/

【讨论】:

  • 我已尝试清除缓存并进行诊断。清除缓存没有帮助,在编辑的问题中诊断
  • 我已经更新了我的问题,您的 SSL 无法正常工作,我认为您的 openssl 扩展未加载,请检查。
  • 但是作曲家工作得更早。在php.ini 我有extension=php_openssl.dll 行(没有评论)
  • 它加载了吗?您的设置有问题,也许您的命令行使用了另一个 php 解释器和另一个 php.ini,并且您进行了一些更新?在某些情况下,这就是 composer 使用默认 php 命令的问题。
  • 我只有一个实例 od xampp 并且最近没有更新。截至openssl我已经加载了
【解决方案2】:

我以前在代理中遇到过这种情况。请检查您的环境变量,将 HTTP_PROXY_REQUEST_FULLURI 设置为 false,并且 HTTP_PROXY 和 HTTPS_PROXY 未设置为无法连接的内容。

【讨论】:

    【解决方案3】:

    我能想到的选项很少:

    • 它正在寻找一个文件 https://packagist.org/p/symfony/routing$0b411061e305b2d7a108caca01c21b859b6a2be133eff320b93e64d8c5759e2b.json 这显然不存在。所以一种选择是注释掉 除了一个之外的包,以排除它是哪一个。然后尝试 为其安装不同的版本。

    • 检查您的 PHP 版本。 您使用的 PHP 版本是什么?如果是5.3,那肯定会
      通过更新到更新的版本来修复。它有一些问题
      使用 SSL。

    【讨论】:

      【解决方案4】:

      如果安装了 laravel composer 并且可以在您的机器上全局访问,但您在下载 laravel 安装程序时遇到错误,请执行以下步骤:

      1. 以管理员身份打开 cmd。
      2. 运行以下命令: 作曲家诊断

      检查以下突出显示的设置:

      C:\Windows\system32>composer diagnose
      Checking platform settings: OK
      Checking git settings: OK  
      **Checking http connectivity to packagist:** OK
      **Checking https connectivity to packagist:** WARNING
      [Composer\Downloader\TransportException] The "https://packagist.org/packages.jso
      n" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error
       messages:
      error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
      Failed to enable crypto
      failed to open stream: operation failed
      Checking github.com rate limit: OK
      Checking disk free space: OK
      Checking pubkeys:
      Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB
      723 4E5D42D0 84A14642
      Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E32
      8C AD90147D AFE50952
      OK
      Checking composer version: OK
      

      所以,由于我的公司代理设置,我遇到了 OpenSSL 问题。 要解决,请执行以下步骤:

      首先,请确保与您公司的 IT 部门联系。应该在您的机器上启用 SSL。然后,再次尝试下载 laravel 安装程序。如果还是不行;然后走得更远。

      获取 cacert 文件的路径(在我的例子中,路径是 C:\Users\harshita.kumar\AppData\Roaming\Composer)。

      打开 php.ini 文件 并在文件中找到 openssl.cafile。通过删除取消注释此行 ;并给出它的 cacert 文件路径。

      再次检查 laravel 安装程序。它现在必须/将起作用。

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2014-02-11
        • 2021-05-12
        • 1970-01-01
        • 2020-02-17
        • 2015-01-19
        • 2014-04-23
        • 2020-05-27
        • 2021-08-10
        • 2017-01-15
        相关资源
        最近更新 更多