我在一个网络中使用 composer,在该网络中访问互联网的唯一方式是使用 HTTP 或 socks 代理。我有 http_proxy 和 https_proxy 环境变量。当composer尝试访问HTTPS URL时,我得到了这样的结果:
file could not be downloaded: failed to open stream: Cannot connect to HTTPS server through proxy
据我所知,连接 https 网站的唯一方法是使用连接动词。我怎样才能在代理服务器后面使用composer呢?
如果您使用的是 Linux 或 Unix(包括 OS X)系统,则应将其放在会影响环境的地方:
export HTTP_PROXY_REQUEST_FULLURI=0 # or false
export HTTPS_PROXY_REQUEST_FULLURI=0 #
你可以把它放在 /etc/profile
中,以便对机器上的所有用户产生全局影响,也可以放在你自己的 ~/.bashrc
或 ~/.zshrc
中,这取决于你使用的 shell。
如果你使用的是 Windows 系统,打开环境变量控制面板,添加系统或用户环境变量,将 HTTP_PROXY_REQUEST_FULLURI
和 HTTPS_PROXY_REQUEST_FULLURI
设为 0
或 false
。
对于阅读此文的其他人(不是你,因为你说你已经设置了这些),请确保使用相同的方法将 HTTP_PROXY
和 HTTPS_PROXY
设置为正确的代理。 如果你使用的是 Unix/Linux/OS X,设置变量名的大写和小写版本是最完整的方法,因为有些东西只使用小写版本,而我记得有些东西使用大写版本。 (我经常使用一种混合环境,即 Windows 上的 Cygwin,我知道对我来说,同时使用两种语言是很重要的,但纯粹的 Unix/Linux 环境可能只使用小写)。
如果你做完这一切后仍然无法正常工作,而且你确信你设置了正确的代理服务器地址,那么请检查一下你的公司是否在使用微软的代理服务器。 如果是,你可能需要安装 Cntlm,作为子代理在 Composer(等)和微软代理服务器之间进行连接。 谷歌 CNTLM 可获取更多信息和设置方法。