Linux 上的 PHP:如何让 PHP 使用代理设置连接到互联网?

Linux 上的 PHP:如何让 PHP 使用代理设置连接到互联网?

我的服务器位于 LAN 中,并通过代理服务器连接到互联网。我的 PHP 应用程序 (Drupal) 应该能够通过 PHP 代码检查更新。我该如何设置代理设置为了PHP以便它能正常运作?

笔记:我知道我可以在 curl 或其他程序中设置代理设置。但事实是代码不是我的,我不想更改它。我只是想让 PHP 始终通过特定的代理设置连接到互联网。

答案1

该功能尚未在 php 中实现,但已在讨论中:
http://bugs.php.net/bug.php?id=29280

如果您的 php >= 5.3,您可以使用 auto_prepend ini 设置来包含一个使用 stream_context_set_default() 来设置默认代理的脚本。但这只会为使用默认上下文的 php 部分设置代理,没有测试过,但我认为 curl 示例没有。

答案2

您是否尝试过设置环境变量?

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

答案3

我不知道您的发行版,但在 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"

答案4

您还需要其他信息吗?

无论如何 - 记录在案:这是 drupal 中一个长期未解决的问题http://drupal.org/node/7881- 真的很奇怪。- 还有更多

我修补了我的核心代码,但是在升级时必须跟踪补丁的变化,这并不好。

如果有办法让 php 使用系统范围的代理,我不知道,搜索它很乏味。

问候

相关内容