web-dev-qa-db-ja.com

PHP Composer httpプロキシの背後

composerを使用するのは、インターネットにアクセスする唯一の方法が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 Webサイトに接続する唯一の方法は、接続動詞を使用することです。このプロキシの背後でcomposerを使用するにはどうすればよいですか?

26
Robert Dolca

LinuxまたはUnix(OS Xを含む)を使用している場合は、環境に影響する場所にこれを配置する必要があります。

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

/etc/profileに配置して、マシン上のすべてのユーザーにグローバルに影響を与えることができます。または、使用するシェルに応じて、独自の~/.bashrcまたは~/.zshrcを使用できます。

Windowsを使用している場合は、[環境変数]コントロールパネルを開き、HTTP_PROXY_REQUEST_FULLURIHTTPS_PROXY_REQUEST_FULLURIの両方を0またはfalseに設定したシステムまたはユーザー環境変数を追加します。

これを読んでいる他の人(これらを設定したと言っているので、あなたではない)については、HTTP_PROXYHTTPS_PROXYが同じメソッドを使用して正しいプロキシに設定されていることを確認してください。 Unix/Linux/OS Xを使用している場合、変数名の大文字バージョンと小文字バージョンの両方を設定するのが最も完全なアプローチです。一部の場合は小文字バージョンのみを使用し、IIRCの一部は大文字を使用します。 (私はWindows上のCygwinのようなハイブリッド環境をよく使用しますが、両方を持っていることが重要であることは知っていますが、純粋なUnix/Linux環境は小文字で逃げることができるかもしれません。)

これをすべて実行してもまだ機能しない場合、および正しいプロキシアドレスが設定されていることを確認したら、会社がMicrosoftプロキシサーバーを使用しているかどうかを調べます。その場合は、おそらくComposer(など)とMicrosoftプロキシサーバーの間で接続するための子プロキシとして Cntlm をインストールする必要があります。詳細と指示についてはGoogle CNTLM設定方法について。

30
iconoclast

Windowsを使用している場合、同じ環境変数を設定する必要がありますが、Windowsスタイルは次のとおりです。

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

これは現在のcmd.exeで機能します。これをもっと永続的にしたい場合は、システムで環境変数を使用することをお勧めします。

34
Felipe

これを試して:

export HTTPS_PROXY_REQUEST_FULLURI=false

数週間前に会社でプロキシの背後で働いていた私にとってこの問題を解決しました。

7

資格情報を使用する必要がある場合は、これを試してください。

export HTTP_PROXY="http://username:[email protected]:port"
5
chrisandrews7

これは動作します、これは私の場合です...

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

IPとポートで置き換えます

4

iconoclastの答えは私にはうまくいきませんでした。

PHPを5.3。*(xampp 1.7.4)から5.5。*(xampp 1.8.3)にアップグレードすると、問題は解決しました。

まずiconoclastの答えを試してください。うまくいかない場合は、アップグレードすると問題が解決する場合があります。

2

標準のHTTP_PROXY環境変数を使用できます。プロキシのURLに設定するだけです。多くのオペレーティングシステムがこの変数を既に設定しています。

変数をエクスポートするだけで、常に入力する必要はありません。

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

その後、composer updateを通常どおりに実行できます。

1
Tom Sarduy

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" "$@"
1
softwarevamp

上記のアイデアに従って、作曲家のプロキシ環境を作成するシェルスクリプトを作成しました。

#!/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を押すだけでプロキシモードを終了できます。

export PATH=~/bin:$PATHを直接実行できない場合は、~/.bashrcまたは~/.zshrcproxy_mode_Shellを追加してください。

0
Charles

操作がタイムアウトしました(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

実行composer ...

次を使用して、IPv6を再度有効にできます。

networksetup -setv6automatic Wi-Fi

ただし、これで問題が解決した場合は、ISPに問い合わせてルーティングエラーを解決してください。これは、すべての人にとって問題を解決するための最良の方法です。

それがあなたを助けることを願っています!

0
Le Khiem