PHP di Linux: Bagaimana membuat PHP menggunakan pengaturan proxy untuk terhubung ke internet?

12

server saya ada di LAN dan terhubung ke internet melalui Server Proxy. aplikasi PHP saya (Drupal), harus dapat memeriksa pembaruan melalui kode PHP. bagaimana saya bisa mengatur Pengaturan Proxy untuk PHP sehingga berfungsi dengan baik?

Catatan : saya tahu bahwa saya dapat mengatur pengaturan proxy di curl atau yang lainnya. tetapi masalahnya adalah bahwa kode itu bukan milik saya dan saya tidak ingin mengubahnya. Saya hanya ingin membuat PHP selalu terhubung ke internet melalui pengaturan proxy tertentu.

Alexar
sumber

Jawaban:

7

Fitur ini bukan implementet di php, tetapi (sedang) dalam diskusi:
http://bugs.php.net/bug.php?id=29280

jika Anda memiliki php> = 5.3 Anda bisa menggunakan pengaturan auto_prepend ini untuk memasukkan skrip yang menggunakan stream_context_set_default () untuk mengatur proxy default. tetapi ini hanya akan menetapkan proxy untuk bagian-bagian php yang menggunakan konteks default, tidak mengujinya tetapi saya pikir curl fore contoh tidak.

Florian Fida
sumber
Seharusnya juga bekerja pada curl, setidaknya dalam kode sumber ada logika untuk itu: link
aseques
Ada contoh yang berfungsi di stackoverflow yang menggunakan stream_context_create alih-alih context_set_default, tetapi itu akan berfungsi jika Anda mengubahnya.
aseques
1

Sudahkah Anda mencoba mengatur variabel lingkungan?

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

RedGrittyBrick
sumber
tidak, haruskah saya melakukan ini menggunakan putenv()atau dalam .htaccess?
Alexar
Tidak juga, Coba edit / etc / environment
RedGrittyBrick
1
Jika / etc / environment tidak membantu, saya akan mengedit / etc / apache2 / envvars dan saya akan memasukkan http_proxy dan HTTP_PROXY karena aplikasi yang berbeda kadang-kadang memiliki koneksi yang berbeda pula. Lakukan penghentian penuh dan mulai ulang Apache sebelum pengujian. Gunakan phpinfo untuk memeriksa variabel yang terlihat oleh php
RedGrittyBrick
saya menggunakan export http_proxy = localhost: 8080 export HTTP_PROXY = localhost: 8080 apakah benar?
Alexar
1
tidak ada yang membantu.
Alexar
0

Saya tidak tahu distribusi Anda, tetapi di SUSE Anda dapat mengedit file /etc/sysconfig/proxydan memasukkan satu atau beberapa server proxy untuk penggunaan di seluruh sistem.

Berikut ini sebuah contoh:

## 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"
Kristen
sumber
Terima kasih. saya menggunakan Ubuntu dan saya saat ini menetapkan proxy untuk penggunaan seluruh sistem. tapi itu tidak berhasil.
Alexar
0

Jika server Anda terhubung sedemikian rupa sehingga hanya dapat mengirim permintaan http melalui proxy, maka Anda tidak perlu melakukan perubahan apa pun. Namun, Anda harus memastikan bahwa Anda memiliki cara untuk memverifikasi bahwa permintaan http Anda dilakukan melalui proxy.

Perhatikan juga - proxy Anda mungkin tidak menangani semua permintaan - hanya http / https. Lalu lintas mungkin melewati proxy, tetapi jika proxy tidak dikonfigurasi untuk menangani mereka, mereka mungkin melewati tanpa banyak jejak.

Jika Anda pikir ini mungkin terjadi, saya akan memperketat firewall pada server PHP sehingga hanya dapat mengirim jenis lalu lintas tertentu ke lokasi yang ditentukan. Anda kemudian harus dapat melihat apa yang gagal dan mengambil tindakan yang sesuai.

dunxd
sumber
0

apakah Anda masih membutuhkan info?

Lagi pula - sebagai catatan: masalah lama yang luar biasa ini di drupal http://drupal.org/node/7881 - benar-benar aneh. - dan masih banyak lagi

Saya menambal kode inti saya, tetapi kita harus melacak perubahan tambalan saat memutakhirkan dan itu tidak baik.

Jika ada cara untuk membuat php menggunakan proxy seluruh sistem, saya tidak tahu, mencari itu membosankan.

salam

groovehunter
sumber