PHP Composer за http-прокси

Я использую композитор в сети, где единственный способ получить доступ к Интернету — использовать прокси-сервер HTTP или socks. У меня есть переменные окружения http_proxy и https_proxy. Когда compose пытается получить доступ к URL-адресам HTTPS, я получаю следующее:

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

Насколько я знаю, единственный способ подключиться к веб-сайту https — использовать глагол подключения. Как я могу использовать композитор за этим прокси?


person Robert Dolca    schedule 25.06.2013    source источник
comment
Разве это не ответ на ваш вопрос? -- stackoverflow.com/questions/15268093   -  person Amal Murali    schedule 26.06.2013
comment
Как я уже сказал, у меня есть переменная окружения HTTP_PROXY/http_proxy.   -  person Robert Dolca    schedule 26.06.2013
comment
Возможно, ваше расширение openssl устарело github.com/composer/composer/issues/2021   -  person 1ed    schedule 26.06.2013
comment
Запустите composer diag, чтобы проверить соединение. В Composer есть два метода общения с прокси, и, вероятно, тот из них, который используется, неверен.   -  person Sven    schedule 26.06.2013
comment
@1ed Версия OpenSSL — 1.0.1.x, и я столкнулся с той же проблемой, что и boldtrn в Ubuntu 12.04.   -  person Robert Dolca    schedule 26.06.2013
comment
@Sven Проверка HTTP-прокси: OK Проверка поддержки HTTP-прокси для request_fulluri: OK Проверка поддержки HTTPS-прокси для request_fulluri: FAIL Невозможно подтвердить ситуацию, возможно, github не работает (api.github.com/repos/Seldaek/jsonlint/zipball/1.0.0: не удалось открыть поток : Не удается подключиться к HTTPS-серверу через прокси)   -  person Robert Dolca    schedule 26.06.2013
comment
Плохо - это то, что я получаю и с моим прокси, и у меня нет решения. В моей ситуации я подозреваю, что OpenSSL в PHP — это неисправная серия 0.9.8, которая нуждается в некоторых настройках. Проект Composer определенно нуждается в некоторой помощи в этом, потому что прокси — это настоящая боль в работе, поэтому, если вы откроете проблему на github и предоставите как можно больше информации, всем в конечном итоге понравится решение.   -  person Sven    schedule 26.06.2013
comment
github.com/composer/composer/issues/2041   -  person Robert Dolca    schedule 26.06.2013
comment
Мы разрабатываем на Zend Server. Нет возможности обновить встроенные библиотеки OpenSSL. Как-то забавно, потому что приложения ZF2 в Zend Studio основаны на возможностях Composer. У меня ушло несколько часов на то, чтобы найти нет решения.   -  person emolah    schedule 26.06.2013


Ответы (10)


Если вы работаете в 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 некоторые используют верхний регистр. (Я часто использую своего рода гибридную среду, Cygwin в Windows, и я знаю, что для меня было важно иметь обе, но чистые среды Unix/Linux могли бы обойтись только строчными буквами.)

Если вы все еще не можете заставить все работать после того, как сделали все это, и вы уверены, что у вас установлен правильный адрес прокси, проверьте, использует ли ваша компания прокси-сервер Microsoft. Если это так, вам, вероятно, потребуется установить Cntlm в качестве дочернего прокси-сервера для соединения между Composer (и т. д.) и прокси-сервером Microsoft. Google CNTLM для получения дополнительной информации и инструкций по его настройке.

person iconoclast    schedule 09.08.2013

Если вы используете Windows, вы должны установить те же переменные среды, но в стиле Windows:

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

Это будет работать для вашего текущего cmd.exe. Если вы хотите сделать это более постоянным, я предлагаю вам использовать переменные среды в вашей системе.

person Felipe    schedule 17.09.2013
comment
Если вам нужны учетные данные, выполните SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT% - person andig; 12.11.2013

Если вам нужно использовать учетные данные, попробуйте следующее:

export HTTP_PROXY="http://username:[email protected]:port"
person chrisandrews7    schedule 19.09.2014
comment
Мне также пришлось установить HTTP_PROXY_REQUEST_FULLURI обратно на 1 и правильно закодировать мой пароль в Windows. - person Arthur; 25.09.2014

Попробуй это:

export HTTPS_PROXY_REQUEST_FULLURI=false

решил эту проблему для меня, работающего за прокси в компании несколько недель назад.

person Nicolai Fröhlich    schedule 26.06.2013
comment
@RobertDolca: посмотрите мой ответ и дайте мне знать, если это все еще не поможет. Недавно мне пришлось столкнуться с этой проблемой, поэтому, надеюсь, я смогу помочь вам заставить ее работать. - person iconoclast; 10.08.2013
comment
Извините, но я не могу воспроизвести проблему сейчас - person Robert Dolca; 17.08.2013

Это работает, это мой случай...

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

Замените на свой IP и порт

person diego matos - keke    schedule 22.04.2016
comment
Я случайно добавил косую черту в конце. После его удаления composer-setup смог продолжить работу. Другие инструменты (wget...), похоже, игнорируют эту косую черту. - person MKesper; 26.01.2017

в 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" "$@"
person softwarevamp    schedule 05.06.2018

ответ иконоборца мне не помог.

Я обновил свой php с 5.3.* (xampp 1.7.4) до 5.5.* (xampp 1.8.3), и проблема была решена.

Сначала попробуйте ответ иконоборца, если он не сработает, обновление может решить проблему.

person Amr H. Abd Elmajeed    schedule 30.09.2013

Время ожидания операции истекло (проблемы с IPv6) # Вы можете столкнуться с ошибками, если IPv6 настроен неправильно. Распространенная ошибка:

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

Мы рекомендуем вам исправить настройки IPv6. Если это невозможно, вы можете попробовать следующие обходные пути:

Временное решение для Linux:

В Linux кажется, что запуск этой команды помогает сделать трафик ipv4 более приоритетным, чем ipv6, что является лучшей альтернативой полному отключению 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

Запустите композитор...

Вы можете снова включить IPv6 с помощью:

networksetup -setv6automatic Wi-Fi

Тем не менее, если это решит вашу проблему, поговорите об этом со своим интернет-провайдером, чтобы попытаться устранить ошибки маршрутизации. Это лучший способ решить проблемы для всех.

Надеюсь, это поможет вам!

person Le Khiem    schedule 07.07.2019

Вы можете использовать стандартную переменную среды HTTP_PROXY. Просто установите его на URL вашего прокси. Многие операционные системы уже установили эту переменную для вас.

Просто экспортируйте переменную, тогда вам не придется вводить ее все время.

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

Затем вы можете сделать composer update как обычно.

person Tom Sarduy    schedule 16.08.2014

в соответствии с приведенными выше идеями я создал сценарий оболочки, чтобы создать прокси-среду для композитора.

#!/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, когда вам понадобится прокси. После завершения обновления вы можете просто нажать клавишу Ctrl+D, чтобы выйти из режима прокси.

добавьте export PATH=~/bin:$PATH к ~/.bashrc или ~/.zshrc, если вы не можете запустить proxy_mode_shell напрямую.

person Charles    schedule 09.02.2017