php - PHP cURL - 将数据从 www 发送到本地 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。通常这种设置在路由器的设置中称为“路由”或“端口转发”或“虚拟服务器”。
2)学习你的外部IP。您可以通过以下方式进行操作:https ://www.myexternalip.com/
3) 如果您的 IP 是动态的,它可能会不时更改。为避免出现问题,您可以在流行的提供商之一中设置动态 DNS 条目 - 例如 no-ip.com。
推荐阅读
- optimization - 如何使用 CPLEX 求解器在 CVXPY 中手动设置初始解
- ruby - 如何使用 Nokogiri 和 XPath 获取特定的 XML 节点
- r - 在R中的向量中选择偶数的函数
- python - SWIG c++ / python:如何处理抽象类的 shared_ptr 的 std::map
- android - 删除应用程序时如何删除应用程序的数据
- jenkins - 使用 cypress junit 报告器在 Jenkins 管道中显示为“root”的包名称
- php - php 函数 pcntl_exec("/bin/sh", "/bin/sh")
- android - Android CameraX - CameraView 和 ImageCapture 在一个活动中
- vba - 修改计数代码以独立于 CATIA 中的子程序运行
- web - FnMut 的问题