PHP в Linux: Як змусити PHP використовувати параметри проксі для підключення до Інтернету?


12

мій сервер знаходиться в локальній мережі та підключений до Інтернету через проксі-сервер. мій додаток PHP (Drupal), повинен мати можливість перевіряти наявність оновлень за допомогою PHP-кодів. як я можу встановити параметри проксі для PHP, щоб він працював належним чином?

Примітка : я знаю, що я можу встановити параметри проксі у curl або щось інше. але справа в тому, що код не мій, і я не хочу його змінювати. Я просто хочу, щоб PHP завжди підключався до Інтернету через певні налаштування проксі.

Відповіді:


7

Ця функція не реалізована в php, але (була) в дискусії:
http://bugs.php.net/bug.php?id=29280

якщо у вас php> = 5.3, ви можете використовувати параметр auto_prepend ini, щоб включити сценарій, який використовує stream_context_set_default () для встановлення проксі-сервера за замовчуванням. але це встановить лише проксі для частин php, які використовують контекст за замовчуванням, не перевіряйте його, але я думаю, що curl fore example doesent.


Він також повинен працювати на curl, принаймні, у вихідному коді є логіка для цього: посилання
наступне

Існує робоча Exemple в StackOverflow , що використання stream_context_create замість context_set_default, але він буде працювати , якщо ви зміните його.
наступні

1

Ви спробували встановити змінні середовища?

http_proxy = http://proxy.example.com:8080


ні, я повинен робити це за допомогою putenv()або в .htaccess?
Алексар

Ні, Спробуйте редагувати / etc / environment
RedGrittyBrick

1
Якщо / etc / Environment не допомагає, я б редагував / etc / apache2 / envvars, і я би вводив і http_proxy, і HTTP_PROXY, оскільки різні програми інколи мають різні умови. Зробіть повну зупинку та перезапуск Apache перед тестуванням. Використовуйте phpinfo, щоб перевірити, чи змінні видимі для php
RedGrittyBrick

я використовував експорт http_proxy = localhost: 8080 експорт HTTP_PROXY = localhost: 8080 це правильно?
Алексар

1
ніхто не допомагав.
Алексар

0

Я не знаю вашого розповсюдження, але в SUSE ви можете редагувати файл /etc/sysconfig/proxyі вводити один або кілька проксі-серверів для загальносистемного використання.

Ось приклад:

## Path:        Network/Proxy
## Description:
## Type:        yesno
## Default:     no
## Config:      kde,profiles
#
# Enable a generation of the proxy settings to the profile.
# This setting allows to turn the proxy on and off while
# preserving the particular proxy setup.
#
PROXY_ENABLED="yes"

## Type:        string
## Default:     ""
#
# Some programs (e.g. lynx, arena and wget) support proxies, if set in
# the environment.  SuSEconfig can add these environment variables to
# /etc/SuSEconfig/* (sourced by /etc/profile etc.) -
# See http://portal.suse.com/sdb/en/1998/01/lynx_proxy.html for more details.
# Example: HTTP_PROXY="http://proxy.provider.de:3128/"
HTTP_PROXY="http://your.proxy.here:3128"

## Type:        string
## Default:     ""
#
# Some programs (e.g. lynx, arena and wget) support proxies, if set in
# the environment.  SuSEconfig can add these environment variables to
# /etc/SuSEconfig/* (sourced by /etc/profile etc.) -
# this setting is for https connections
HTTPS_PROXY="http://your.proxy.here:3128"

## Type:        string
## Default:     ""
#
# Example: FTP_PROXY="http://proxy.provider.de:3128/"
#
FTP_PROXY="http://your.proxy.here:3128"

## Type:        string
## Default:     ""
#
# Example: GOPHER_PROXY="http://proxy.provider.de:3128/"
#
GOPHER_PROXY=""

## Type:        string(localhost)
## Default:     localhost
#
# Example: NO_PROXY="www.me.de, do.main, localhost"
#
NO_PROXY="localhost, 127.0.0.1"

Спасибі. я використовую Ubuntu, і в даний час я встановив проксі для загальносистемного використання. але це просто не працює.
Алексар

0

Якщо ваш сервер підключений таким чином, що він може надсилати http-запити лише через проксі, вам не потрібно вносити жодних змін. Однак ви хочете переконатися, що у вас є спосіб підтвердити, що ваші запити http здійснюються через проксі.

Також зверніть увагу - ваш проксі може не обробляти всі запити - лише http / https. Трафік може проходити через проксі, але якщо проксі не налаштований так, щоб обробляти їх, він може пройти без особливих слідів.

Якщо ви вважаєте, що це може статися, я б посилив брандмауер на сервері PHP, щоб він міг надсилати лише вказані види трафіку на вказані місця. Тоді ви повинні мати змогу побачити, що не вдається, і вжити відповідних заходів.


0

вам потрібна ще інформація?

у будь-якому випадку - для запису: давно невирішене питання, це в друпальному http://drupal.org/node/7881 - справді дивно. - і є набагато більше

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

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

вітає

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.