Linux上のPHP:PHPでプロキシ設定を使用してインターネットに接続する方法


12

私のサーバーはLANにあり、プロキシサーバーを介してインターネットに接続されています。私のPHPアプリケーション(Drupal)は、PHPコードを介して更新を確認できるはずです。どのように私は設定できるプロキシ設定をするためにPHPが正しく機能するように?

:curlまたは他の何かでプロキシ設定を設定できることを知っています。しかし、ケースはコードが私のものではなく、変更したくないということです。PHPが常に特定のプロキシ設定を介してインターネットに接続するようにしたいだけです。

回答:


7

この機能はphpでは実装されていませんが、議論されていました(以前):http :
//bugs.php.net/bug.php?id=29280

5.3以上のphpがある場合は、auto_prepend ini設定を使用して、stream_context_set_default()を使用してデフォルトプロキシを設定するスクリプトを含めることができます。しかし、これはデフォルトのコンテキストを使用するPHPの部分にのみプロキシを設定し、それをテストしませんでしたが、私はcurl foreの例はないと思います。


少なくともソースコードには、次のロジックがあります。リンク
12

stackoverflowには、context_set_defaultの代わりにstream_context_createを使用する作業用の例がありますが、変更しても機能します。
12

1

環境変数を設定しようとしましたか?

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


いいえ、putenv().htaccess を使用してこれを行う必要がありますか?
アレクサー

どちらも、編集の/ etc /環境試していない
RedGrittyBrick

1
/ etc / environmentが役に立たない場合は、/ etc / apache2 / envvarsを編集し、http_proxyとHTTP_PROXYの両方を追加します。アプリケーションごとにconventiopnsが異なる場合があるためです。テストする前に、Apacheを完全に停止して再起動します。phpinfoを使用して、変数がphpに表示されることを確認します
RedGrittyBrick

export http_proxy = localhost:8080 export HTTP_PROXY = localhost:8080を使用しましたか?
アレクサー

1
誰も助けなかった。
アレクサー

0

ディストリビューションはわかりませんが、SUSEではファイル/etc/sysconfig/proxyを編集して、システム全体で使用するために1つまたは複数のプロキシサーバーを入力できます。

以下に例を示します。

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

ありがとう。私はUbuntuを使用しており、現在、システム全体で使用するプロキシを設定しています。しかし、それは機能しません。
アレクサー

0

サーバーがプロキシを介してのみhttpリクエストを送信できるように接続されている場合、変更を加える必要はありません。ただし、httpリクエストがプロキシを介して行われたことを確認する方法があることを確認する必要があります。

また、プロキシがすべてのリクエストを処理しているわけではなく、http / httpsだけを処理している場合もあります。トラフィックはプロキシを通過している可能性がありますが、プロキシがとにかくそれらを処理するように設定されていない場合、多くのトレースなしで通過する可能性があります。

これが発生していると思われる場合は、PHPサーバーのファイアウォールを強化して、指定された種類のトラフィックのみを指定された場所に送信できるようにします。その後、何が失敗しているかを確認し、適切なアクションを実行できるはずです。


0

まだ情報が必要ですか?

とにかく-記録のために:これはdrupal http://drupal.org/node/7881にあります -本当に奇妙です。-そして、もっとたくさんあります

コアコードにパッチを適用しましたが、アップグレード時のパッチの変更を追跡する必要があり、それは良くありません。

PHPでシステム全体のプロキシを使用する方法がある場合、それを検索するのは退屈でした。

あいさつ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.