PHP cURL-从www向本地IP发送数据

问题描述 投票:0回答:1

我一直在尝试使用cURL将数据发送到本地IP。该IP正在等待接收传入的数据。

为此,我使用了以下代码:

if(isset($_GET['post'])) {
    $data = array(
        'type' => 'direct',
        'packages' => []
    );

    $curl = curl_init('http://192.168.2.10:12800/api/install');
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($curl, CURLOPT_FAILONERROR, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    if (curl_errno($curl)) {
        $error_msg = curl_error($curl);
    }

    echo curl_exec($curl);

    if (isset($error_msg)) {
        echo $error_msg;
    } else {
        echo 'OK!';
    }
}

在localhost上有效,但在实时网站上无效。

[我当时在想,非本地主机不可能与本地主机环境通信,但我不确定。

是否可以使我的脚本将数据发送到本地IP?

编辑:经过深思,是否必须切换到JavaScript才能正常工作?

php curl localhost local
1个回答
0
投票

为了使远程服务器与您的本地基础结构进行通信,您需要通过外部IP将其公开。因此,您需要:

1)设置路由器上端口的路由(例如将端口12800传递到本地网络中的特定IP-因此,例如,如果您的外部IP为83.123.123.123,则路由器将通过发送到83.123的所有流量传递)。 123.123:12800到192.168.2.10:12800。通常,此类设置在以下位置称为“路由”或“端口转发”或“虚拟服务器”路由器的设置。

2)学习您的外部IP。您可以执行以下操作:https://www.myexternalip.com/

3)如果您的IP是动态的,它可能会不时更改。为了避免出现问题,您可以在其中一个受欢迎的提供商中设置动态DNS条目-例如no-ip.com。

© www.soinside.com 2019 - 2024. All rights reserved.