37

我在网络上使用 composer,其中访问 Internet 的唯一方法是使用 HTTP 或 socks 代理。我有 http_proxy 和 https_proxy 环境变量。当 compose 尝试访问 HTTPS URL 时,我得到以下信息:

 file could not be downloaded: failed to open stream: Cannot connect to HTTPS server through proxy

据我所知,连接到 https 网站的唯一方法是使用连接动词。我如何在这个代理后面使用作曲家?

4

10 回答 10

42

如果您使用的是 Windows,则应设置相同的环境变量,但使用 Windows 样式:

set http_proxy=<your_http_proxy:proxy_port>
set https_proxy=<your_https_proxy:proxy_port>

这将适用于您当前的 cmd.exe。如果您想更永久地执行此操作,建议您在系统上使用环境变量。

于 2013-09-17T14:01:16.470 回答
33

如果你在 Linux 或 Unix(包括 OS X)上,你应该把它放在会影响你的环境的地方:

export HTTP_PROXY_REQUEST_FULLURI=0 # or false
export HTTPS_PROXY_REQUEST_FULLURI=0 #

您可以将它放入/etc/profile全局影响机器上的所有用户,或者您自己的用户,~/.bashrc或者~/.zshrc,取决于您使用的 shell。

如果您使用的是 Windows,请打开 Environment Variables 控制面板,然后添加系统或用户环境变量,并将两者都HTTP_PROXY_REQUEST_FULLURI设置HTTPS_PROXY_REQUEST_FULLURI0or false

对于阅读本文的其他人(不是您,因为您说您已经设置了这些),请使用相同的方法确保HTTP_PROXYHTTPS_PROXY设置为正确的代理。如果您在 Unix/Linux/OS X 上,设置变量名的大写和小写版本是最完整的方法,因为有些东西只使用小写版本,而 IIRC 有些使用大写。(我经常使用一种混合环境,Windows 上的 Cygwin,我知道两者兼有很重要,但纯 Unix/Linux 环境可能只使用小写字母就可以了。)

如果您在完成所有这些操作后仍然无法正常工作,并且您确定您设置了正确的代理地址,那么请检查您的公司是否使用 Microsoft 代理服务器。如果是这样,您可能需要安装Cntlm作为子代理来连接 Composer(等)和 Microsoft 代理服务器。谷歌 CNTLM 以获取有关如何设置的更多信息和说明。

于 2013-08-09T21:24:06.257 回答
8

如果您必须使用凭据,请尝试以下操作:

export HTTP_PROXY="http://username:password@webproxy.com:port"
于 2014-09-19T13:05:23.873 回答
7

试试这个:

export HTTPS_PROXY_REQUEST_FULLURI=false

几周前,我在一家公司的代理后面工作,为我解决了这个问题。

于 2013-06-26T23:15:13.313 回答
6

这行得通,这是我的情况......

C:\xampp\htdocs\your_dir>SET HTTP_PROXY="http://192.168.1.103:8080" 

替换为您的 IP 和端口

于 2016-04-22T19:26:14.310 回答
3

在 Windows 上插入:

set http_proxy=<proxy>
set https_proxy=<proxy>

php "%~dp0composer.phar" %*

或在 Linux 上插入:

export http_proxy=<proxy>
export https_proxy=<proxy>

php "${dir}/composer.phar" "$@"
于 2018-06-05T01:06:56.017 回答
2

iconoclast 的回答对我不起作用。

我将我的 php 从 5.3.* (xampp 1.7.4) 升级到 5.5.* (xampp 1.8.3),问题就解决了。

首先尝试 iconoclast 的答案,如果它不起作用,那么升级可能会解决问题。

于 2013-09-30T15:04:32.050 回答
2

您可以使用标准HTTP_PROXY环境变量。只需将其设置为代理的 URL。许多操作系统已经为您设置了这个变量。

只需导出变量,您就不必一直键入它。

export HTTP_PROXY="http://johndoeproxy.cu:8080"

然后就可以composer update正常操作了。

于 2014-08-16T07:32:23.340 回答
2

操作超时(IPv6 问题)# 如果 IPv6 配置不正确,您可能会遇到错误。一个常见的错误是:

The "https://getcomposer.org/version" file could not be downloaded: failed to
open stream: Operation timed out

我们建议您修复 IPv6 设置。如果这不可行,您可以尝试以下解决方法:

解决方法 Linux:

在 linux 上,运行此命令似乎有助于使 ipv4 流量具有比 ipv6 更高的优先级,这比完全禁用 ipv6 更好:

sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"

解决方法窗口:

在 Windows 上,恐怕唯一的方法是完全禁用 ipv6(在 Windows 中或在您的家庭路由器中)。

解决方法 Mac OS X:

获取您的网络设备的名称:

networksetup -listallnetworkservices

在该设备上禁用 IPv6(在本例中为“Wi-Fi”):

networksetup -setv6off Wi-Fi

运行作曲家...

您可以通过以下方式再次启用 IPv6:

networksetup -setv6automatic Wi-Fi

也就是说,如果这解决了您的问题,请与您的 ISP 讨论它以尝试解决路由错误。这是为每个人解决问题的最佳方式。

希望对您有所帮助!

于 2019-07-07T04:44:51.543 回答
0

根据上面的想法,我创建了一个shell脚本来为composer创建一个代理环境。

#!/bin/bash
export HTTP_PROXY=http://127.0.0.1:8888/
export HTTPS_PROXY=http://127.0.0.1:8888/
zsh # you can alse use bash or other shell

这段代码在一个名为的文件中,当您需要代理时~/bin/proxy_mode_shell,它将创建一个新的shell 实例。zsh更新完成后,您可以简单地按键Ctrl+D退出代理模式。

添加export PATH=~/bin:$PATH~/.bashrc或者~/.zshrc如果你不能proxy_mode_shell直接运行。

于 2017-02-09T12:11:57.703 回答