PHP en Linux: ¿Cómo hacer que PHP use la configuración de proxy para conectarse a Internet?


12

mi servidor está en una LAN y está conectado a internet a través de un servidor proxy. mi aplicación PHP (Drupal), debería poder buscar actualizaciones a través de códigos PHP. ¿Cómo puedo establecer la configuración de proxy para PHP para que funcione correctamente?

Nota : Sé que puedo establecer la configuración del proxy en curl o algo más. pero el caso es que el código no es mío y no quiero cambiarlo. Solo quiero que PHP siempre se conecte a Internet a través de una configuración de proxy específica.

Respuestas:


7

Esta característica no está implementada en php, pero (estaba) en discusión:
http://bugs.php.net/bug.php?id=29280

si tiene php> = 5.3, puede usar auto_prepend ini setting para incluir un script que use stream_context_set_default () para establecer un proxy predeterminado. pero esto solo establecerá un proxy para las partes de php que usan el contexto predeterminado, no lo probé, pero creo que curl por ejemplo no lo hace.


También debería funcionar en curl, al menos en el código fuente está la lógica: link
aseques

Hay un ejemplo de trabajo en stackoverflow que usa stream_context_create en lugar de context_set_default, pero funcionará si lo cambia.
aseques

1

¿Has intentado establecer variables de entorno?

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


no, ¿debería hacer esto usando putenv()o en .htaccess?
Alexar

Tampoco, intente editar / etc / environment
RedGrittyBrick

1
Si / etc / environment no ayuda, editaría / etc / apache2 / envvars y pondría tanto http_proxy como HTTP_PROXY ya que las diferentes aplicaciones tienen diferentes convepciones a veces. Haga una parada completa y reinicie Apache antes de realizar la prueba. Use phpinfo para verificar que las variables sean visibles para php
RedGrittyBrick

utilicé export http_proxy = localhost: 8080 export HTTP_PROXY = localhost: 8080 ¿ es correcto?
Alexar

1
Nadie ayudó.
Alexar

0

No conozco su distribución, pero en SUSE puede editar el archivo /etc/sysconfig/proxye ingresar uno o varios servidores proxy para uso en todo el sistema.

Aquí hay un ejemplo:

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

Gracias. Yo uso Ubuntu y actualmente he configurado proxy para uso en todo el sistema. Pero simplemente no funciona.
Alexar

0

Si su servidor está conectado de tal manera que solo puede enviar solicitudes http a través del proxy, entonces no debería necesitar hacer ningún cambio. Sin embargo, querrá asegurarse de tener una forma de verificar que sus solicitudes http se realizan a través del proxy.

También tenga en cuenta que su proxy puede no estar manejando todas las solicitudes, solo http / https. El tráfico puede estar pasando a través del proxy, pero si el proxy no está configurado para manejarlos de todos modos, pueden pasar sin mucho rastro.

Si crees que esto puede estar sucediendo, reforzaría el firewall en el servidor PHP para que solo pueda enviar tipos específicos de tráfico a ubicaciones específicas. Entonces debería poder ver qué está fallando y tomar las medidas adecuadas.


0

¿todavía necesitas información?

de todos modos, para el registro: un problema pendiente desde hace mucho tiempo en drupal http://drupal.org/node/7881 - realmente extraño. - y hay mucho más

Parcheé mi código central, pero uno tiene que rastrear los cambios de parches en la actualización y no es agradable.

Si hay una manera de hacer que php use proxy en todo el sistema, no tengo idea, buscarlo fue tedioso.

saluda

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.