You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Cron Job执行PHP脚本时如何正确获取IP地址?

解决Cron Job运行PHP无法获取IP的问题

Cron直接运行PHP属于CLI命令行模式,没有HTTP请求的上下文环境,所以$_SERVER['REMOTE_ADDR']这个仅在HTTP请求中存在的变量会返回null,解决方法分以下几种场景:

场景1:需要获取服务器的公网IP

可以通过调用简单的IP查询服务,或者读取服务器本地网卡信息:

方法A:调用外部IP查询服务

// 获取服务器公网IP
$ip = trim(file_get_contents('https://icanhazip.com'));

方法B:读取服务器本地网卡信息

适合仅需要内网IP的场景:

// 获取服务器主网卡IP(Linux环境)
$ip = trim(exec('hostname -I | cut -d" " -f1'));

场景2:仅需要标记该请求来自Cron Job

不需要真实IP的话,可以直接设置一个自定义标识:

$ip = 'cron-job-internal';

重要提醒:修复SQL注入风险

你原代码直接拼接变量到SQL语句中存在严重的SQL注入漏洞,务必改用预处理语句:

// 安全的数据库更新写法
$stmt = $con->prepare("UPDATE `table` SET `colum` = ? WHERE id = 1");
$stmt->bind_param("s", $ip); // "s"表示字符串类型参数
$stmt->execute();
$stmt->close();

内容的提问来源于stack exchange,提问作者Abhishek Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:45:33