用 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 在服务器上加载远程数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP 使用curl 执行远程服务器的一个shell脚本

通过“远程桌面连接”工具,共享本机磁盘到远程服务器

如何从夹具远程加载数据

用php怎么样完成从读取一个服务器上的数据库的改变到另外一个服务器上的数据库?

一分钟搞定pychram和服务器端远程同步和调试代码

PHP 远程连接到 MS Access 2016 数据库