Linux의 PHP : PHP가 프록시 설정을 사용하여 인터넷에 연결하는 방법?


12

내 서버가 LAN에 있으며 프록시 서버를 통해 인터넷에 연결되어 있습니다. 내 PHP 응용 프로그램 (Drupal)은 PHP 코드를 통해 업데이트를 확인할 수 있어야합니다. 제대로 작동하도록 PHP 프록시 설정 을 어떻게 설정 합니까?

참고 : 프록시 설정을 컬 등으로 설정할 수 있다는 것을 알고 있습니다. 그러나 경우는 코드가 내 것이 아니며 변경하고 싶지 않다는 것입니다. PHP가 항상 특정 프록시 설정을 통해 인터넷에 연결되도록하고 싶습니다.

답변:


7

이 기능은 PHP에서 구현되지는 않았지만 토론
중에는 http://bugs.php.net/bug.php?id=29280

php> = 5.3 인 경우 auto_prepend ini 설정을 사용하여 stream_context_set_default ()를 사용하여 기본 프록시를 설정하는 스크립트를 포함시킬 수 있습니다. 그러나 이것은 기본 컨텍스트를 사용하는 PHP 부분에 대해서만 프록시를 설정하고 테스트하지는 않았지만 curl for example 예제가 없다고 생각합니다.


컬에서도 작동해야합니다. 최소한 소스 코드에는 논리가 있습니다. link
aseques

stackoverflow 에는 context_set_default 대신 stream_context_create를 사용 하는 작업 예제가 있지만 변경하면 작동합니다.
aseques

1

환경 변수 설정을 시도 했습니까?

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


아니요, putenv()또는 .htaccess를 사용 하여이 작업을 수행해야 합니까?
Alexar

/ etc / environment
RedGrittyBrick을

1
/ etc / environment가 도움이되지 않으면 / etc / apache2 / envvars를 편집하고 http_proxy와 HTTP_PROXY를 둘 다 입력했습니다. 응용 프로그램마다 다른 구성 요소가 있기 때문입니다. 테스트하기 전에 Apache를 완전히 중지했다가 다시 시작하십시오. 사용은 phpinfo는 변수를 PHP로 볼 수 있습니다 확인
RedGrittyBrick

export http_proxy = localhost : 8080을 사용했습니다. export HTTP_PROXY = localhost : 8080 맞습니까?
Alexar

1
아무도 도와주지 않았다.
Alexar

0

배포판을 모르지만 SUSE에서는 파일을 편집하고 /etc/sysconfig/proxy시스템 전체 사용을 위해 하나 이상의 프록시 서버를 입력 할 수 있습니다.

예를 들면 다음과 같습니다.

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

감사. 우분투를 사용하고 있으며 현재 시스템 전체 사용을 위해 프록시를 설정했습니다. 그러나 그것은 작동하지 않습니다.
Alexar

0

프록시를 통해서만 http 요청을 보낼 수있는 방식으로 서버가 연결되어 있으면 변경할 필요가 없습니다. 그러나 http 요청이 프록시를 통해 이루어 졌는지 확인하는 방법이 필요합니다.

또한 프록시가 모든 요청을 처리하지 못할 수도 있습니다-http / https. 트래픽이 프록시를 통과 할 수 있지만 프록시가 어쨌든 처리하도록 프록시를 구성하지 않으면 많은 추적없이 통과 할 수 있습니다.

이런 일이 발생할 수 있다고 생각되면 PHP 서버의 방화벽을 강화하여 지정된 종류의 트래픽 만 지정된 위치로 보낼 수 있습니다. 그런 다음 실패한 내용을보고 적절한 조치를 취할 수 있어야합니다.


0

아직도 정보가 필요합니까?

어쨌든-기록을 위해 : 오랫동안 눈에 띄는 문제 이것은 drupal http://drupal.org/node/7881에 있습니다 -정말 이상합니다. -그리고 훨씬 더있다

핵심 코드를 패치했지만 업그레이드시 패치 변경 사항을 추적해야하며 좋지 않습니다.

PHP가 시스템 전체 프록시를 사용하게하는 방법이 있다면, 그것을 찾는 것은 지루한 일입니다.

접견

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.