web-dev-qa-db-fra.com

PHP Compositeur derrière un proxy http

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?

24
Robert Dolca

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.

27
iconoclast

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.

31
Felipe

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.

7
nifr

Si vous devez utiliser des informations d'identification, essayez ceci:

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

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

4
diego matos - keke

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.

3
Amr H. Abd Elmajeed

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!

1
Le Khiem

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.

1
Tom Sarduy

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

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.

0
Charles