Назад | Перейти на главную страницу

PHP в Linux: как заставить PHP использовать настройки прокси-сервера для подключения к Интернету?

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

Заметка: я знаю, что могу установить настройки прокси в curl или еще где-нибудь. но дело в том, что код не мой, и я не хочу его менять. Я просто хочу, чтобы PHP всегда подключался к Интернету через определенные настройки прокси.

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

если у вас php> = 5.3, вы можете использовать параметр auto_prepend ini, чтобы включить скрипт, который использует stream_context_set_default () для установки прокси по умолчанию. но это установит прокси только для тех частей php, которые используют контекст по умолчанию, не тестировал его, но я думаю, что пример curl fore отсутствует.

Вы пробовали устанавливать переменные среды?

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

Я не знаю вашего дистрибутива, но в 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"

Если ваш сервер подключен таким образом, что может отправлять HTTP-запросы только через прокси, вам не нужно вносить никаких изменений. Однако вы должны убедиться, что у вас есть способ проверить, что ваши HTTP-запросы отправляются через прокси.

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

Если вы думаете, что это может происходить, я бы ужесточил брандмауэр на сервере PHP, чтобы он мог отправлять только определенные виды трафика в указанные места. После этого вы сможете увидеть, что именно не удается, и предпринять соответствующие действия.

тебе нужна еще информация?

в любом случае - для протокола: давно нерешенная проблема - это в drupal http://drupal.org/node/7881 - действительно странно. - и многое другое

Я исправил свой основной код, но нужно отслеживать изменения исправлений при обновлении, и это неприятно.

Если есть способ заставить php использовать общесистемный прокси, я понятия не имею, его поиск был утомительным.

приветствует