PHP代理背后的PHP Composer

Rob*_*lca 32 php php-5.3 composer-php

我在网络上使用composer,访问互联网的唯一方法是使用HTTP或socks代理.我有http_proxy和https_proxy环境变量.当撰写尝试访问HTTPS URL时,我得到:

 file could not be downloaded: failed to open stream: Cannot connect to HTTPS server through proxy
Run Code Online (Sandbox Code Playgroud)

据我所知,连接到https网站的唯一方法是使用连接动词.如何在此代理后面使用composer?

小智 38

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

set http_proxy=<your_http_proxy:proxy_port>
set https_proxy=<your_https_proxy:proxy_port>
Run Code Online (Sandbox Code Playgroud)

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

  • 如果需要凭据,请执行SET HTTP_PROXY = http://%USER%:%PASSWORD%@%SERVER%:%PORT% (2认同)

ico*_*ast 30

如果您使用的是Linux或Unix(包括OS X),则应将其置于可能影响环境的地方:

export HTTP_PROXY_REQUEST_FULLURI=0 # or false
export HTTPS_PROXY_REQUEST_FULLURI=0 #
Run Code Online (Sandbox Code Playgroud)

你可以把它/etc/profile在全球范围内影响所有用户的机器,还是自己上~/.bashrc还是~/.zshrc取决于哪个壳您使用.

如果您在Windows上,请打开"环境变量"控制面板,并添加系统或用户环境变量,HTTP_PROXY_REQUEST_FULLURI并将其HTTPS_PROXY_REQUEST_FULLURI设置为0false.

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

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

  • 那对我来说没有解决问题! (7认同)

Nic*_*ich 7

试试这个:

export HTTPS_PROXY_REQUEST_FULLURI=false
Run Code Online (Sandbox Code Playgroud)

几个星期前我在一家公司的代理工作后解决了这个问题.


小智 6

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

export HTTP_PROXY="http://username:password@webproxy.com:port"
Run Code Online (Sandbox Code Playgroud)


die*_*eke 5

这有效,这是我的情况...

C:\xampp\htdocs\your_dir>SET HTTP_PROXY="http://192.168.1.103:8080" 
Run Code Online (Sandbox Code Playgroud)

替换为您的IP和端口