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?
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.
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.
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.
Wenn Sie Anmeldeinformationen verwenden müssen, versuchen Sie Folgendes:
export HTTP_PROXY="http://username:[email protected]:port"
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
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.
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!
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.
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]"
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.