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を使用するにはどうすればよいですか?
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_FULLURI
とHTTPS_PROXY_REQUEST_FULLURI
の両方を0
またはfalse
に設定したシステムまたはユーザー環境変数を追加します。
これを読んでいる他の人(これらを設定したと言っているので、あなたではない)については、HTTP_PROXY
とHTTPS_PROXY
が同じメソッドを使用して正しいプロキシに設定されていることを確認してください。 Unix/Linux/OS Xを使用している場合、変数名の大文字バージョンと小文字バージョンの両方を設定するのが最も完全なアプローチです。一部の場合は小文字バージョンのみを使用し、IIRCの一部は大文字を使用します。 (私はWindows上のCygwinのようなハイブリッド環境をよく使用しますが、両方を持っていることが重要であることは知っていますが、純粋なUnix/Linux環境は小文字で逃げることができるかもしれません。)
これをすべて実行してもまだ機能しない場合、および正しいプロキシアドレスが設定されていることを確認したら、会社がMicrosoftプロキシサーバーを使用しているかどうかを調べます。その場合は、おそらくComposer(など)とMicrosoftプロキシサーバーの間で接続するための子プロキシとして Cntlm をインストールする必要があります。詳細と指示についてはGoogle CNTLM設定方法について。
Windowsを使用している場合、同じ環境変数を設定する必要がありますが、Windowsスタイルは次のとおりです。
set http_proxy=<your_http_proxy:proxy_port>
set https_proxy=<your_https_proxy:proxy_port>
これは現在のcmd.exeで機能します。これをもっと永続的にしたい場合は、システムで環境変数を使用することをお勧めします。
これを試して:
export HTTPS_PROXY_REQUEST_FULLURI=false
数週間前に会社でプロキシの背後で働いていた私にとってこの問題を解決しました。
資格情報を使用する必要がある場合は、これを試してください。
export HTTP_PROXY="http://username:[email protected]: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
環境変数を使用できます。プロキシの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" "$@"
上記のアイデアに従って、作曲家のプロキシ環境を作成するシェルスクリプトを作成しました。
#!/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
または~/.zshrc
にproxy_mode_Shell
を追加してください。
操作がタイムアウトしました(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に問い合わせてルーティングエラーを解決してください。これは、すべての人にとって問題を解決するための最良の方法です。
それがあなたを助けることを願っています!