PHP trên Linux: Làm cách nào để PHP sử dụng cài đặt proxy để kết nối với internet?


12

máy chủ của tôi ở trong mạng LAN và được kết nối với internet thông qua Máy chủ proxy. ứng dụng PHP của tôi (Drupal), có thể kiểm tra các bản cập nhật thông qua mã PHP. Làm cách nào tôi có thể đặt Cài đặt proxy cho PHP để nó hoạt động đúng?

Lưu ý : tôi biết rằng tôi có thể đặt cài đặt proxy theo dạng curl hoặc thứ gì khác. nhưng trường hợp là mã không phải của tôi và tôi không muốn thay đổi nó. tôi chỉ muốn làm cho PHP luôn kết nối với internet thông qua một cài đặt proxy cụ thể.

Câu trả lời:


7

Tính năng này không được triển khai trong php, nhưng (đã) được thảo luận:
http://bugs.php.net/orms.php?id=29280

nếu bạn có php> = 5.3, bạn có thể sử dụng cài đặt auto_prepend ini để bao gồm tập lệnh sử dụng stream_context_set_default () để đặt proxy mặc định. nhưng điều này sẽ chỉ đặt một proxy cho các phần của php sử dụng bối cảnh mặc định, không kiểm tra nó nhưng tôi nghĩ ví dụ curl fore không có.


Nó cũng hoạt động trên curl, ít nhất là trong mã nguồn có logic cho nó: link
quả là

Có một ví dụ hoạt động trong stackoverflow sử dụng stream_context_create thay vì context_set_default, nhưng nó sẽ hoạt động nếu bạn thay đổi nó.
quả là

1

Bạn đã thử thiết lập các biến môi trường chưa?

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


không, tôi nên làm điều này bằng cách sử dụng putenv()hoặc trong .htaccess?
Alexar

Không, hãy thử chỉnh sửa / etc / môi trường
RedGrittyBrick

1
Nếu / etc / môi trường không có ích, tôi sẽ chỉnh sửa / etc / apache2 / envvars và tôi sẽ đặt cả http_proxy và HTTP_PROXY vì các ứng dụng khác nhau đôi khi có các quy ước khác nhau. Dừng hoàn toàn và khởi động lại Apache trước khi thử nghiệm. Sử dụng phpinfo để kiểm tra các biến được hiển thị cho php
RedGrittyBrick

tôi đã sử dụng export http_proxy = localhost: 8080 export HTTP_PROXY = localhost: 8080 phải không?
Alexar

1
không ai giúp đỡ
Alexar

0

Tôi không biết phân phối của bạn, nhưng trong SUSE, bạn có thể chỉnh sửa tệp /etc/sysconfig/proxyvà nhập một hoặc nhiều máy chủ proxy để sử dụng trên toàn hệ thống.

Đây là một ví dụ:

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

cảm ơn. Tôi sử dụng Ubuntu và hiện tại tôi đã đặt proxy để sử dụng trên toàn hệ thống. nhưng nó không hoạt động.
Alexar

0

Nếu máy chủ của bạn được kết nối theo cách mà nó chỉ có thể gửi yêu cầu http thông qua proxy, thì bạn không cần thực hiện bất kỳ thay đổi nào. Tuy nhiên, bạn sẽ muốn đảm bảo rằng bạn có cách xác minh rằng các yêu cầu http của bạn được thực hiện thông qua proxy.

Cũng lưu ý - proxy của bạn có thể không xử lý tất cả các yêu cầu - chỉ http / https. Lưu lượng truy cập có thể được chuyển qua proxy, nhưng nếu proxy không được định cấu hình để xử lý những người đó bằng mọi cách, họ có thể đi qua mà không có nhiều dấu vết.

Nếu bạn nghĩ điều này có thể xảy ra, tôi sẽ siết chặt tường lửa trên máy chủ PHP để nó chỉ có thể gửi các loại lưu lượng truy cập được chỉ định đến các vị trí được chỉ định. Sau đó, bạn sẽ có thể thấy những gì đang thất bại và có hành động thích hợp.


0

bạn vẫn cần thông tin chứ?

dù sao đi nữa - đối với hồ sơ: một vấn đề nổi cộm kéo dài, đây là trong drupal http://drupal.org/node/7881 - thực sự kỳ lạ. - và còn nhiều nữa

Tôi đã vá mã lõi của mình, nhưng người ta phải theo dõi các thay đổi của bản vá khi nâng cấp và nó không hay.

Nếu có một cách để làm cho php sử dụng proxy toàn hệ thống, tôi không biết, việc tìm kiếm nó thật tẻ nhạt.

chào

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.