PHP Composer за http proxy

Я використовую композитора в мережі, де єдиний спосіб доступу до Інтернету використовує проксі HTTP або socks. У мене є змінні змінних http_proxy і https_proxy. Коли створювати спроби отримати доступ до URL-адрес HTTPS, я отримую це:

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

Наскільки я знаю, єдиний спосіб підключення до веб-сайту https використовує дієслово з'єднання. Як я можу використовувати композитора за цим проксі-сервером?

22
Чи не відповідає на ваше запитання? - stackoverflow.com/questions/15268093
додано Автор Amal Murali, джерело
Запустіть composer diag , щоб перевірити ваше з'єднання. Композитор має два способи розмовляти з проксі, і, можливо, той, який використовується, неправильний.
додано Автор Sven, джерело
Погана річ - це те, що я отримую і з моїм проксі-сервером, і у мене немає рішення. Для моєї ситуації я підозрюю, що OpenSSL у PHP - це помилкова серія 0.9.8, яка вимагає певних налаштувань. Проект Composer, безумовно, потребує певної допомоги в цьому, адже проксі-серйозні проблеми з роботою, тому, якщо ви відкриєте проблему на github і надасте якомога більше інформації, у кінцевому підсумку кожен зможе отримати рішення.
додано Автор Sven, джерело
Може, ваше розширення openssl застаріло github.com/composer/composer/issues/2021
додано Автор 1ed, джерело
Ми розробляємо на Zend Server. Немає можливості оновити вбудовані бібліотеки OpenSSL. Подекуди смішно, оскільки додатки ZF2 в Zend Studio "засновані" на функціях Composer. Це тримало мене годинами, щоб знайти рішення не .
додано Автор emolah, джерело
додано Автор Robert Dolca, джерело
@Sven Checking HTTP proxy: OK Перевірка підтримки проксі HTTP для request_fulluri: OK Перевірка підтримки проксі HTTPS для request_fulluri: FAIL Неможливо стверджувати ситуацію, можливо, github знизився (" api.github.com/repos/Seldaek/jsonlint/zipball/1.0.0" <; файл неможливо завантажити: не вдалося відкритий потік: неможливо підключитися до сервера HTTPS через проксі)
додано Автор Robert Dolca, джерело
@ 1ed OpenSSL версія 1.0.1.x, і я відчуваю ту ж проблему, як boldtrn на Ubuntu 12.04.
додано Автор Robert Dolca, джерело
Як я вже сказав, у мене є змінну середовища HTTP_PROXY/http_proxy
додано Автор Robert Dolca, джерело

10 Відповіді

Якщо ви використовуєте Windows, вам слід встановити ті самі змінні середовища, але стиль Windows:

set http_proxy=
set https_proxy=

Це буде працювати для вашого поточного cmd.exe. Якщо ви хочете зробити це більш постійним, ви пропонуєте вам використовувати змінні середовища у вашій системі.

30
додано
Якщо вам потрібні облікові дані, SET HTTP_PROXY = http: //% USER%:% PASSWORD% @% SERVER%:% PORT%
додано Автор andig, джерело

Якщо ви знаходитесь на 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 як дитячий проксі-сервер для з'єднання між композитором (і т.д.) та проксі-сервером Microsoft. Google CNTLM для отримання додаткової інформації та інструкцій щодо його налаштування.

24
додано
Добре це не вирішило проблему для мене!
додано Автор dude, джерело

Спробуйте це:

export HTTPS_PROXY_REQUEST_FULLURI=false

вирішив цю проблему для мене, працюючи за проксі на підприємстві кілька тижнів тому.

7
додано
@РобертДолька: перевірте мою відповідь, і дайте мені знати, якщо це все одно не допоможе. Нещодавно я мав справу з цією проблемою, тому, сподіваюсь, я зможу допомогти вам отримати її роботу.
додано Автор iconoclast, джерело
Я намагався. Це не працює.
додано Автор Robert Dolca, джерело
Мені шкода, але я не можу відтворити цю проблему зараз
додано Автор Robert Dolca, джерело

Якщо вам потрібно використовувати облікові дані, спробуйте це:

export HTTP_PROXY="http://username:[email protected]:port"
5
додано
це обидва змусило його працювати і для мене, PHP - 5,5
додано Автор groovehunter, джерело
Мені також довелося встановити HTTP_PROXY_REQUEST_FULLURI назад до 1 і кодувати мій правильно пароль на Windows.
додано Автор Arthur, джерело

Це працює, це моя справа ...

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

Замініть свій IP-порт і порт

3
додано
Я випадково додав кінцеву косу риску. Після видалення композитор-настройка зміг продовжити. Інші інструменти (wget ...), здається, ігнорують цю косу риску.
додано Автор MKesper, джерело

Відповідь іконоборця не спрацювала для мене.

Я оновив мою PHP з 5.3. * (Xampp 1.7.4) до 5.5. * (Xampp 1.8.3), і проблема була вирішена.

Спробуйте, перш за все, відповідь іконоборця, якщо вона не працює, оновлення може вирішити проблему.

3
додано

Рішення таке: це ваш проксі-сервер, який заблоковано, ви повинні встановити зовнішнє з'єднання, ви можете використовувати USB-модем і повторно завантажити: composer.phar install PHP, я запускаю мій

3
додано
Питання про те, як пройти через проксі, а не як обійти це з іншим з'єднанням ...
додано Автор Toilal, джерело

Ви можете використовувати стандартний середовище HTTP_PROXY var. Просто встановіть його на адресу вашого проксі-сервера. Багато операційних систем вже встановили цю змінну для вас.

Просто експортуйте змінну, тоді вам не потрібно вводити її постійно.

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

Тоді ви можете зробити update composer зазвичай.

1
додано

на вставці Windows:

set http_proxy=
set https_proxy=

раніше

php "%~dp0composer.phar" %*

або вставлення в Linux:

export http_proxy=
export https_proxy=

раніше

php "${dir}/composer.phar" "[email protected]"
0
додано

згідно з вищенаведеними ідеями, я створив сценарій оболонки, який створює проксі-середовище для композитора.

#!/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/PSTH = ~/bin: $ PATH до ~/.bashrc або ~/.zshrc , якщо ви не можете запустити proxy_mode_shell безпосередньо.

0
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php