J'utilise composer sur un réseau où le seul moyen d'accéder à Internet consiste à utiliser HTTP ou un proxy socks. J'ai les variables d'environnement http_proxy et https_proxy. Lorsque compose tente d'accéder aux URL HTTPS, je reçois ceci:
file could not be downloaded: failed to open stream: Cannot connect to HTTPS server through proxy
Autant que je sache, le seul moyen de se connecter à un site Web https est d'utiliser un verbe connecter. Comment puis-je utiliser composer derrière ce proxy?
Si vous êtes sous Linux ou Unix (y compris OS X), vous devriez placer ceci quelque part qui affectera votre environnement:
export HTTP_PROXY_REQUEST_FULLURI=0 # or false
export HTTPS_PROXY_REQUEST_FULLURI=0 #
Vous pouvez le placer dans /etc/profile
pour affecter globalement tous les utilisateurs de la machine, ou votre propre ~/.bashrc
ou ~/.zshrc
, en fonction du shell que vous utilisez.
Si vous utilisez Windows, ouvrez le panneau de configuration des variables d'environnement et ajoutez des variables d'environnement système ou utilisateur avec HTTP_PROXY_REQUEST_FULLURI
et HTTPS_PROXY_REQUEST_FULLURI
définis sur 0
ou false
.
Pour les autres personnes lisant ceci (pas vous, puisque vous avez dit que vous les avez configurées), assurez-vous que HTTP_PROXY
et HTTPS_PROXY
sont définis sur le bon proxy, en utilisant les mêmes méthodes. Si vous utilisez Unix/Linux/OS X, l’approche la plus complète est de définir à la fois les versions majuscules et minuscules du nom de la variable, car certaines choses n’utilisent que la version minuscule et certaines lettres IIRC, la majuscule. (J'utilise souvent une sorte d'environnement hybride, Cygwin sous Windows, et je sais qu'il est important d'avoir les deux, mais les environnements Unix/Linux purs pourraient peut-être s'en sortir en minuscules.)
Si vous ne parvenez toujours pas à faire fonctionner les choses après avoir terminé tout cela et que vous êtes certain que l'adresse proxy est correctement définie, vérifiez si votre société utilise un serveur proxy Microsoft. Si tel est le cas, vous devrez probablement installer Cntlm en tant que proxy enfant pour vous connecter entre Composer (etc.) et le serveur proxy Microsoft. Google CNTLM pour plus d'informations et des instructions sur sa configuration.
Si vous utilisez Windows, vous devez définir les mêmes variables d’environnement, mais le style Windows:
set http_proxy=<your_http_proxy:proxy_port>
set https_proxy=<your_https_proxy:proxy_port>
Cela fonctionnera pour votre cmd.exe actuel. Si vous voulez que cela soit plus permanent, vous suggérons d'utiliser des variables d'environnement sur votre système.
Essaye ça:
export HTTPS_PROXY_REQUEST_FULLURI=false
résolu ce problème pour moi travaillant derrière un proxy dans une entreprise il y a quelques semaines.
Si vous devez utiliser des informations d'identification, essayez ceci:
export HTTP_PROXY="http://username:[email protected]:port"
Cela fonctionne, c'est mon cas ...
C:\xampp\htdocs\your_dir>SET HTTP_PROXY="http://192.168.1.103:8080"
Remplacer par votre IP et votre port
la réponse d'iconoclaste n'a pas fonctionné pour moi.
J'ai mis à niveau mon php de 5.3. * (Xampp 1.7.4) à 5.5. * (Xampp 1.8.3) et le problème a été résolu.
Essayez d’abord la réponse de l’iconoclaste. Si cela ne fonctionne pas, une mise à niveau pourrait résoudre le problème.
Opération expirée (problèmes IPv6) # Vous pouvez rencontrer des erreurs si IPv6 n'est pas configuré correctement. Une erreur courante est:
The "https://getcomposer.org/version" file could not be downloaded: failed to
open stream: Operation timed out
Nous vous recommandons de réparer votre configuration IPv6. Si ce n'est pas possible, vous pouvez essayer les solutions suivantes:
Solution de contournement Linux:
Sous Linux, il semble que l'exécution de cette commande aide à donner au trafic ipv4 une prio supérieure à celle d'ipv6, ce qui représente une meilleure alternative que de désactiver complètement ipv6:
Sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"
Contournement Windows:
Sous Windows, le seul moyen est de désactiver complètement ipv6, ce qui est bien (que ce soit sous Windows ou dans votre routeur domestique).
Solution de contournement Mac OS X:
Obtenez le nom de votre périphérique réseau:
networksetup -listallnetworkservices
Désactivez IPv6 sur ce périphérique (dans ce cas, "Wi-Fi"):
networksetup -setv6off Wi-Fi
Exécuter composer ...
Vous pouvez réactiver IPv6 avec:
networksetup -setv6automatic Wi-Fi
Cela dit, si cela résout votre problème, parlez-en à votre fournisseur de services Internet pour tenter de résoudre les erreurs de routage. C'est la meilleure façon de résoudre les problèmes pour tout le monde.
En espérant que cela vous aidera!
Vous pouvez utiliser l'environnement standard HTTP_PROXY
var. Il suffit de le définir à l'URL de votre proxy. De nombreux systèmes d'exploitation définissent déjà cette variable pour vous.
Exportez simplement la variable, vous n’aurez pas à la taper tout le temps.
export HTTP_PROXY="http://johndoeproxy.cu:8080"
Ensuite, vous pouvez faire composer update
normalement.
sous Windows:
set http_proxy=<proxy>
set https_proxy=<proxy>
avant
php "%~dp0composer.phar" %*
ou sur Linux insert:
export http_proxy=<proxy>
export https_proxy=<proxy>
avant
php "${dir}/composer.phar" "$@"
selon les idées ci-dessus, j'ai créé un script Shell pour créer un environnement proxy pour le compositeur.
#!/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
Ce morceau de code est dans un fichier nommé ~/bin/proxy_mode_Shell
et créera une nouvelle instance de shell zsh
lorsque vous aurez besoin d'un proxy. Une fois la mise à jour terminée, vous pouvez simplement appuyer sur la touche Ctrl+D
pour quitter le mode proxy.
ajoutez export PATH=~/bin:$PATH
à ~/.bashrc
ou ~/.zshrc
si vous ne pouvez pas exécuter proxy_mode_Shell
directement.