wake-up-neo.com

PHP Komponist hinter http-Proxy

Ich verwende Composer in einem Netzwerk, in dem der Zugriff auf das Internet nur über HTTP oder Socks-Proxy möglich ist. Ich habe Umgebungsvariablen http_proxy und https_proxy. Wenn compose versucht, auf HTTPS-URLs zuzugreifen, erhalte ich Folgendes:

 file could not be downloaded: failed to open stream: Cannot connect to HTTPS server through proxy

Soweit ich weiß, besteht die einzige Möglichkeit, eine Verbindung zu einer https-Website herzustellen, über ein Verbindungsverb. Wie kann ich Composer hinter diesem Proxy verwenden?

24
Robert Dolca

Wenn Sie mit Linux oder Unix (einschließlich OS X) arbeiten, sollten Sie dies an einem Ort angeben, der sich auf Ihre Umgebung auswirkt:

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

Sie können es in /etc/profile eingeben, um global alle Benutzer auf dem Computer oder Ihren eigenen ~/.bashrc oder ~/.zshrc zu beeinflussen, abhängig von der verwendeten Shell.

Öffnen Sie unter Windows das Kontrollfeld "Umgebungsvariablen" und fügen Sie entweder eine System- oder Benutzerumgebungsvariable hinzu, wobei sowohl HTTP_PROXY_REQUEST_FULLURI als auch HTTPS_PROXY_REQUEST_FULLURI auf 0 oder false gesetzt sind. 

Für andere Personen, die dies lesen (nicht Sie, da Sie sagten, dass Sie diese Einstellungen eingerichtet haben), stellen Sie sicher, dass HTTP_PROXY und HTTPS_PROXY mit den gleichen Methoden auf den richtigen Proxy gesetzt sind. Wenn Sie Unix/Linux/OS X verwenden, ist das Festlegen der Groß- und Kleinbuchstabenversion des Variablennamens die vollständigste Vorgehensweise, da einige Dinge nur die Kleinbuchstabenversion verwenden und IIRC die Großbuchstaben. (Ich verwende häufig eine Art Hybridumgebung, Cygwin unter Windows, und ich weiß, dass es wichtig war, beides zu haben, aber reine Unix/Linux-Umgebungen könnten mit nur Kleinbuchstaben davonkommen.) 

Wenn Sie nach all dem immer noch nicht funktionieren, und Sie sich sicher sind, dass Sie die richtige Proxy-Adresse eingestellt haben, prüfen Sie, ob Ihr Unternehmen einen Microsoft-Proxy-Server verwendet. In diesem Fall müssen Sie wahrscheinlich Cntlm als untergeordneten Proxy installieren, um eine Verbindung zwischen Composer (usw.) und dem Microsoft-Proxy-Server herzustellen. Google CNTLM für weitere Informationen und Anweisungen zum Einrichten.

27
iconoclast

Wenn Sie Windows verwenden, sollten Sie dieselben Umgebungsvariablen festlegen, jedoch den Windows-Stil:

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

Das funktioniert für Ihre aktuelle cmd.exe. Wenn Sie dies dauerhafter machen möchten, schlagen Sie vor, Umgebungsvariablen in Ihrem System zu verwenden.

31
Felipe

Versuche dies:

export HTTPS_PROXY_REQUEST_FULLURI=false

ich habe dieses Problem für mich gelöst, als ich vor ein paar Wochen hinter einem Proxy in einem Unternehmen arbeitete.

7
nifr

Wenn Sie Anmeldeinformationen verwenden müssen, versuchen Sie Folgendes:

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

Das funktioniert, das ist mein Fall ...

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

Ersetzen Sie durch Ihre IP und Port

4

die Antwort von iconoclast hat bei mir nicht funktioniert.

Ich habe mein PHP von 5.3. * (Xampp 1.7.4) auf 5.5. * (Xampp 1.8.3) aktualisiert und das Problem wurde behoben.

Versuchen Sie zuerst die Antwort von iconoclast. Wenn dies nicht funktioniert, wird das Problem möglicherweise durch ein Upgrade behoben.

3

Zeitüberschreitung des Vorgangs (IPv6-Probleme) # Wenn IPv6 nicht richtig konfiguriert ist, können Fehler auftreten. Ein häufiger Fehler ist:

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

Wir empfehlen Ihnen, Ihr IPv6-Setup zu korrigieren. Wenn dies nicht möglich ist, können Sie die folgenden Problemumgehungen versuchen:

Workaround Linux:

Unter Linux scheint es so zu sein, als ob das Ausführen dieses Befehls dazu beiträgt, dass der IPv4-Verkehr ein höheres Prio hat als IPv6. Dies ist eine bessere Alternative als die vollständige Deaktivierung von IPv6:

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

Workaround Windows:

Unter Windows besteht die einzige Möglichkeit darin, ipv6 vollständig zu deaktivieren (entweder unter Windows oder in Ihrem Heimrouter).

mgehung von Mac OS X:

Rufen Sie den Namen Ihres Netzwerkgeräts ab:

networksetup -listallnetworkservices

Deaktivieren Sie IPv6 auf diesem Gerät (in diesem Fall "Wi-Fi"):

networksetup -setv6off Wi-Fi

Führen Sie composer aus ...

Sie können IPv6 erneut aktivieren mit:

networksetup -setv6automatic Wi-Fi

Wenn dies das Problem behebt, wenden Sie sich an Ihren Internetdienstanbieter, um die Routing-Fehler zu beheben. Das ist der beste Weg, um Dinge für alle zu lösen.

Ich hoffe es wird dir helfen!

1
Le Khiem

Sie können die Standardumgebung HTTP_PROXY verwenden. Setzen Sie es einfach auf die URL Ihres Proxy. Viele Betriebssysteme setzen diese Variable bereits für Sie.

Exportieren Sie einfach die Variable, dann müssen Sie sie nicht ständig eingeben.

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

Dann können Sie composer update normalerweise tun.

1
Tom Sarduy

unter Windows einfügen:

set http_proxy=<proxy>
set https_proxy=<proxy>

vor

php "%~dp0composer.phar" %*

oder unter Linux einfügen:

export http_proxy=<proxy>
export https_proxy=<proxy>

vor

php "${dir}/composer.phar" "[email protected]"
1
softwarevamp

gemäß den obigen Ideen habe ich ein Shell-Skript erstellt, das eine Proxy-Umgebung für Composer erstellt.

#!/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

Dieser Code befindet sich in einer Datei mit dem Namen ~/bin/proxy_mode_Shell und erstellt eine neue zsh Shell-Instanz, wenn Sie einen Proxy benötigen. Nach Abschluss des Updates können Sie einfach die Taste Ctrl+D drücken, um den Proxy-Modus zu beenden.

fügen Sie export PATH=~/bin:$PATH zu ~/.bashrc oder ~/.zshrc hinzu, wenn Sie proxy_mode_Shell nicht direkt ausführen können.

0
Charles