PHP no Linux: Como fazer o PHP usar configurações de proxy para conectar-se à Internet?


12

meu servidor está em uma LAN e está conectado à Internet através de um servidor proxy. meu aplicativo PHP (Drupal), deve poder verificar se há atualizações através de códigos PHP. como posso definir as configurações de proxy para o PHP para que funcionem corretamente?

Nota : eu sei que posso definir configurações de proxy em curl ou outra coisa. mas o caso é que o código não é meu e eu não quero alterá-lo. Eu só quero fazer o PHP sempre se conectar à Internet através de configurações específicas de proxy.

Respostas:


7

Este recurso não está implementado no php, mas (estava) em discussão:
http://bugs.php.net/bug.php?id=29280

se você tiver php> = 5.3, poderá usar a configuração auto_prepend ini para incluir um script que use stream_context_set_default () para definir um proxy padrão. mas isso só definirá um proxy para as partes do php que usam o contexto padrão, não o testaram, mas eu acho que o exemplo anterior não funciona.


Deve funcionar na onda também, pelo menos no código fonte não é a lógica para isso: ligação
aseques

Há um exemplo de trabalho no stackoverflow que usa stream_context_create em vez de context_set_default, mas funcionará se você o alterar.
aseques

1

Você já tentou definir variáveis ​​de ambiente?

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


não, devo fazer isso usando putenv()ou no .htaccess?
Alexar #

Nem, Tente editar / etc / environment #
RedGrittyBrick

1
Se o / etc / environment não ajudar, eu editaria o arquivo / etc / apache2 / envvars e colocaria http_proxy e HTTP_PROXY, pois aplicativos diferentes têm conventiopns diferentes às vezes. Faça um ponto final e reinicie o Apache antes de testar. Use phpinfo para verificar as variáveis são visíveis para php
RedGrittyBrick

eu usei export http_proxy = localhost: 8080 export HTTP_PROXY = localhost: 8080 está certo?
Alexar 16/10/10

1
ninguém ajudou .
Alexar #

0

Não conheço sua distribuição, mas no SUSE você pode editar o arquivo /etc/sysconfig/proxye inserir um ou vários servidores proxy para uso em todo o sistema.

Aqui está um exemplo:

## 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"

obrigado. Eu uso o Ubuntu e atualmente configurei proxy para uso em todo o sistema. mas simplesmente não funciona.
Alexar #

0

Se o seu servidor estiver conectado de forma que ele possa enviar solicitações HTTP apenas pelo proxy, não será necessário fazer alterações. No entanto, convém verificar se há uma maneira de verificar se suas solicitações HTTP são feitas por meio do proxy.

Observe também - seu proxy pode não estar lidando com todas as solicitações - apenas http / https. O tráfego pode estar passando pelo proxy, mas se o proxy não estiver configurado para lidar com eles de qualquer maneira, eles poderão passar sem muito rastreio.

Se você acha que isso pode estar acontecendo, eu reforçaria o firewall no servidor PHP para que ele possa enviar apenas tipos especificados de tráfego para locais especificados. Você poderá ver o que está falhando e tomar as medidas apropriadas.


0

você ainda precisa de informações?

de qualquer maneira - para que conste: uma questão pendente há muito tempo em drupal http://drupal.org/node/7881 - realmente estranha. - e há muito mais

Corrigi o meu código principal, mas é preciso acompanhar as alterações dos patches na atualização e isso não é legal.

Se existe uma maneira de fazer o php usar proxy em todo o sistema, não faço ideia, procurá-lo era tedioso.

cumprimenta

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.