繁体   English   中英

PHP代理背后的PHP Composer

[英]PHP Composer behind http proxy

我在网络上使用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

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

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

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

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

如果您使用的是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_FULLURIHTTPS_PROXY_REQUEST_FULLURI设置为0false的系统或用户环境变量。

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

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

尝试这个:

export HTTPS_PROXY_REQUEST_FULLURI=false

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

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

export HTTP_PROXY="http://username:password@webproxy.com:port"

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

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

替换为您的IP和端口

iconoclast的答案对我不起作用。

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

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

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

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

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

然后你可以正常进行composer update

在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" "$@"

根据上述想法,我创建了一个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的文件中,当您需要代理时,它将创建一个新的zsh shell实例。 更新完成后,只需按Ctrl+D键即可退出代理模式。

如果无法直接运行proxy_mode_shell请将export PATH=~/bin:$PATH~/.bashrc~/.zshrc

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

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

我们建议您修复IPv6设置。 如果无法做到这一点,您可以尝试以下解决方法:

解决方法Linux:

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

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

解决方法Windows:

在Windows上唯一的办法是完全禁用ipv6,我担心(无论是在Windows中还是在家用路由器中)。

解决方法Mac OS X:

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

networksetup -listallnetworkservices

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

networksetup -setv6off Wi-Fi

运行作曲家......

您可以再次启用IPv6:

networksetup -setv6automatic Wi-Fi

也就是说,如果这可以解决您的问题,请与您的ISP联系,以尝试解决路由错误。 这是让每个人都能解决问题的最好方法。

希望它能帮到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM