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

Telegram Bot Webhook在WordPress线上环境无法触发问题求助

问题描述

我已在WordPress站点配置Telegram Bot Webhook,调用getWebhookInfo得到响应:

{"ok":true,"result":{"url":"https://example.com/webhook-.php","has_custom_certificate":false,"pending_update_count":0,"max_connections":40,"ip_address":"address"}}

该Webhook在本地WordPress环境运行正常,但部署到线上服务器后,无法接收Telegram的任何更新或响应。我通过以下代码获取Telegram数据:

$update = json_decode(file_get_contents('php://input'), true);

Webhook文件与wp-content文件夹处于同一目录。我已检查以下项:

  • allow_url_fopen为开启状态
  • 拥有有效SSL证书
  • Webhook URL配置正确

但线上服务器仍无法接收Telegram更新,请问可能是什么原因?

可能的原因及排查方向
  • WordPress重写规则干扰:线上WordPress通常启用固定链接,.htaccess里的重写规则会把所有请求导向index.php,导致Telegram发送的请求无法直接到达webhook-.php。可以在.htaccess的WordPress重写规则前添加排除规则:
    RewriteRule ^webhook-.php$ - [L]
    
  • 服务器防火墙/安全组拦截:Telegram的Webhook请求来自特定IP段,线上服务器防火墙或云服务商安全组可能未放行这些IP。需要添加Telegram官方公布的IP段到允许列表。
  • PHP配置限制:线上环境的post_max_size或upload_max_filesize设置过小,无法接收Telegram发送的包含媒体内容的更新。检查php.ini中的这两个参数,确保值足够大(比如设为10M以上)。
  • WordPress安全插件拦截:像Wordfence、iThemes Security这类安全插件可能会把Telegram的请求识别为恶意请求并拦截。可以临时禁用插件测试,或在插件中添加Webhook URL到白名单。
  • 文件权限问题:线上服务器的webhook-.php文件权限设置不正确,导致服务器无法执行该文件。确保文件权限为644,目录权限为755。
  • PHP输入流被提前读取:WordPress的某些插件或主题可能在你的代码之前读取了php://input流,导致你获取到空数据。可以在代码开头添加调试代码,检查file_get_contents('php://input')的返回值是否为空,排查是哪个组件提前读取了流。
  • HTTPS跳转问题:如果站点配置了强制HTTPS跳转(比如通过.htaccess或服务器配置),跳转过程中可能丢失Telegram发送的POST数据。确保Webhook URL直接使用HTTPS,且服务器配置不会对该URL进行额外跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:16:12