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

PHP cURL - Send Data From www to Local IP

我一直在尝试使用 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!';
    }
}

在本地主机上可以,但在实时网站上不能。

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

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

编辑:事后想想,我是否必须切换到 JavaScript 才能正常工作?

为了让远程服务器与您的本地基础设施通信,您需要通过外部 IP 公开它。所以你需要:

1) 在您的路由器上设置一个端口的路由(例如将端口 12800 传递到您本地网络中的特定 IP - 例如,如果您的外部 IP 是 83.123.123.123,那么路由器将传递任何发送的流量到 83.123.123.123:12800 到 192.168.2.10:12800。通常这样的设置在中称为 "routing" 或 "port forwarding" 或 "virtual servers" 路由器的设置。

2) 学习你的外网ip。例如,您可以通过以下方式做到这一点:https://www.myexternalip.com/

3) 如果您的 IP 是动态的,它可能会不时发生变化。为避免出现问题,您可以在其中一个流行的提供商中设置动态 DNS 条目 - 例如 no-ip.com。