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

使用TradingView与PHP获取Webhook响应数据的问题排查

TradingView Webhook推送信号至PHP脚本失败排查与解决

问题描述

尝试通过Webhook和TradingView警报将TradingView信号推送至远程PHP脚本,但未成功。具体操作:

  1. 策略代码:
strategy.entry("Long", strategy.long, alert_message = "entry_long")
strategy.exit("Exit Long", "Long", limit=LONG_take_profit, stop=LONG_stop_loss, alert_message = "exit_long")
  1. 按图示配置TradingView警报;
  2. PHP接收脚本:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // fetch RAW input
    $json = file_get_contents('php://input');

    // decode json
    $object = json_decode($json);

    // expecting valid json
    if (json_last_error() !== JSON_ERROR_NONE) {
        die(header('HTTP/1.0 415 Unsupported Media Type'));
    }

    $servdate2 = time();
    $servdate=date('d-M-Y H:i:s',$servdate2);    
    file_put_contents("/home/user/public_html/data.txt", "$servdate :".print_r($object, true),FILE_APPEND);   
}

目前能正常收到警报邮件,但指定路径的data.txt文件中无数据。


错误排查与解决方法

1. Webhook配置验证

  • 确认TradingView警报的Webhook URL为PHP脚本的完整公网地址(如https://your-domain.com/receive-signal.php),本地测试需确保服务器可被公网访问。
  • 检查警报设置中是否勾选了Send to Webhook URL选项,未遗漏任何必填配置项。
  • 确认请求方式为POST(TradingView默认发送POST请求,无需手动修改)。

2. 文件权限问题

  • 检查/home/user/public_html/data.txt及所在目录的权限:
    • 确保PHP运行用户(通常为www-data或apache)拥有文件写入权限,可临时执行命令:chmod 666 /home/user/public_html/data.txt(生产环境建议设置更严格的权限)。
    • 若文件不存在,手动创建data.txt并配置权限,或确保脚本所在目录有创建文件的权限。

3. JSON数据格式与调试

  • TradingView Webhook默认发送包含策略完整信息的JSON对象,而非仅alert_message字段。先调试原始数据:
    修改脚本直接写入原始POST内容,排查是否有数据传入:
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $rawData = file_get_contents('php://input');
        $servdate = date('d-M-Y H:i:s');
        file_put_contents("/home/user/public_html/data.txt", "$servdate : $rawData\n", FILE_APPEND);
    }
    
    运行后查看data.txt,若有内容,再根据实际JSON结构调整解析逻辑。

4. 服务器拦截问题

  • 查看服务器访问日志(如/var/log/apache2/access.log或/var/log/nginx/access.log),确认是否有TradingView的请求记录,若没有则可能被防火墙(iptables、Cloudflare)拦截,需添加规则允许TradingView IP段。
  • 检查服务器安全插件(如ModSecurity)是否拦截POST请求,临时关闭测试或添加放行规则。

5. 脚本有效性验证

  • 直接访问PHP脚本URL,确认返回200状态码;用Postman或curl发送测试POST请求,验证脚本是否能正常写入数据。
  • 检查PHP配置中allow_url_fopen是否开启(php://input读取无需此配置,但确保无其他限制),可通过phpinfo()查看。

优化后的PHP接收脚本示例

<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    exit('Method Not Allowed');
}

// 获取原始POST数据
$rawInput = file_get_contents('php://input');
if (empty($rawInput)) {
    http_response_code(400);
    exit('Empty Request Body');
}

// 解析并记录数据
$data = json_decode($rawInput, true);
$logMessage = date('d-M-Y H:i:s') . " | Raw Data: $rawInput | Parsed Data: " . print_r($data, true) . "\n";

// 写入日志
$logFile = '/home/user/public_html/data.txt';
if (file_put_contents($logFile, $logMessage, FILE_APPEND) === false) {
    http_response_code(500);
    exit('Failed to Write to Log File');
}

http_response_code(200);
exit('Success');
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:30:58