PHP su Linux: come fare in modo che PHP utilizzi le impostazioni proxy per connettersi a Internet?


12

il mio server si trova in una LAN ed è collegato a Internet tramite un server proxy. la mia applicazione PHP (Drupal), dovrebbe essere in grado di controllare gli aggiornamenti tramite i codici PHP. come posso impostare le impostazioni proxy per PHP in modo che funzioni correttamente?

Nota : so che posso configurare le impostazioni proxy in curl o qualcos'altro. ma il caso è che il codice non è mio e non voglio cambiarlo. Voglio solo fare in modo che PHP si connetta sempre a Internet tramite impostazioni proxy specifiche.

Risposte:


7

Questa funzione non è implementata in php, ma (era) in discussione:
http://bugs.php.net/bug.php?id=29280

se hai php> = 5.3 potresti usare l'impostazione ini auto_prepend per includere uno script che usa stream_context_set_default () per impostare un proxy predefinito. ma questo imposterà solo un proxy per le parti di php che usano il contesto predefinito, non lo ha testato ma penso che arricciare l'esempio non lo faccia.


Dovrebbe funzionare anche sul ricciolo, almeno nel codice sorgente c'è la logica per questo: link
aseques

C'è un exemple lavorare in StackOverflow che l'uso stream_context_create invece di context_set_default, ma funzionerà se si modifica.
saluta il

1

Hai provato a impostare le variabili di ambiente?

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


no, dovrei farlo usando putenv()o in .htaccess?
Alexar,

Né, prova a modificare / etc / environment
RedGrittyBrick il

1
Se / etc / environment non aiuta, modificherei / etc / apache2 / envvars e inserirò sia http_proxy che HTTP_PROXY poiché diverse applicazioni hanno a volte differenti conventiopn. Fai un arresto completo e un riavvio di Apache prima del test. Usa phpinfo per verificare che le variabili siano visibili a php
RedGrittyBrick,

ho usato export http_proxy = localhost: 8080 export HTTP_PROXY = localhost: 8080 è giusto?
Alexar,

1
nessuno ha aiutato.
Alexar,

0

Non conosco la tua distribuzione, ma in SUSE puoi modificare il file /etc/sysconfig/proxye inserire uno o più server proxy per l'utilizzo a livello di sistema.

Ecco un esempio:

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

Grazie. io uso Ubuntu e attualmente ho impostato il proxy per l'utilizzo a livello di sistema. ma non funziona.
Alexar,

0

Se il tuo server è collegato in modo tale da poter inviare solo richieste HTTP tramite il proxy, non dovresti apportare modifiche. Tuttavia, vorrai assicurarti di avere un modo per verificare che le tue richieste http vengano fatte tramite il proxy.

Nota anche che il tuo proxy potrebbe non gestire tutte le richieste, ma solo http / https. Il traffico potrebbe passare attraverso il proxy, ma se il proxy non è configurato per gestirli comunque, potrebbe passare senza troppa traccia.

Se ritieni che ciò possa accadere, rafforzerei il firewall sul server PHP in modo che possa inviare solo determinati tipi di traffico verso determinate località. Dovresti quindi essere in grado di vedere cosa non funziona e intraprendere le azioni appropriate.


0

hai bisogno di informazioni ancora?

comunque - per la cronaca: un problema di lunga data, questo è in drupal http://drupal.org/node/7881 - davvero strano. - e c'è molto di più

Ho corretto il mio codice principale, ma uno deve tenere traccia delle modifiche apportate alle patch durante l'aggiornamento e non è carino.

Se c'è un modo per fare in modo che php usi un proxy a livello di sistema, non ne ho idea, cercarlo è noioso.

saluta

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.