用 PHP 在服务器上加载远程数据
Posted
技术标签:
【中文标题】用 PHP 在服务器上加载远程数据【英文标题】:loading remote data on server in PHP 【发布时间】:2010-01-14 20:57:54 【问题描述】:我正在尝试从我的 php 代码中的远程 URL 加载内容。有两个限制:
我需要使用我拥有的专用服务器 IP,因此其他服务器的 REMOTE_ADDR 必须是我的专用 IP。这消除了 Curl,因为 Curl 使用代理来加载远程 URL,并且代理更改了不起作用的 IP 地址。
我需要使用 PHP 在我的后端加载数据。出于安全原因,我不想使用 javascript。
除了Curl还有其他解决方案吗?
谢谢
【问题讨论】:
cURL 使用代理?这是您的配置所独有的吗? 嗨,弗兰克,托管服务提供商在他们的云服务器上使用了代理。因此,当我调用 cURL 时,它会离开我的服务器并通过代理然后到达我想要的 URL。 【参考方案1】:file_get_contents($url)
呢?请注意,某些网站需要用户代理,因此您必须在拨打电话之前使用ini_set()
设置一个。
【讨论】:
【参考方案2】:当使用stream api 和使用socket-wrapper 的包装器时,您可以设置bindto context parameter 来完成(1):
用于指定 PHP 将用于访问网络的 IP 地址(IPv4 或 IPv6)和/或端口号。语法是 ip:port。将 IP 或端口设置为 0 将让系统选择 IP 和/或端口。
$ctx = stream_context_create( array(
'socket' => array(
'bindto' => '192.168.0.107:0',
)
));
$c= file_get_contents('http://php.net', 0, $ctx);
【讨论】:
使用'bindto'属性是解决这个问题的关键。谢谢【参考方案3】:您可能会为此使用fopen。
【讨论】:
+1 是的,如果 fopen_url_wrappers 未启用,则始终存在较低级别的套接字函数。【参考方案4】:你试过file_get_contents
<?php
$homepage = file_get_contents('http://www.***.com/');
echo $homepage;
?>
【讨论】:
以上是关于用 PHP 在服务器上加载远程数据的主要内容,如果未能解决你的问题,请参考以下文章