You need to enable JavaScript to run this app. 如何通过PHP传递参数给Python并调用发送WhatsApp消息
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP传递参数给Python并调用发送WhatsApp消息

问题排查解决步骤
  • 补全所有路径的绝对地址
    PHP调用系统命令时默认工作目录、PATH环境变量和你手动执行代码时的登录用户环境不一致,需要把python、test.py都替换为绝对路径:
    先在本地控制台执行which python3(Windows系统执行where python)拿到Python解释器的绝对路径,比如/usr/bin/python3;再拿到test.py文件的绝对路径,比如/var/www/project/test.py,修改PHP中的命令为:
    $cmd = "/usr/bin/python3 /var/www/project/test.py ".escapeshellarg($para1);
    
    额外增加escapeshellarg方法处理参数,避免号码里的特殊字符导致命令执行异常,同时避免命令注入风险。
  • 检查运行用户权限
    你手动执行Python代码用的是个人登录用户,PHP调用时用的是Web服务的运行用户(比如Linux下的www-data、Windows下的IIS来宾用户),该用户没有pywhatkit依赖的配置目录权限、图形界面调用权限:
    1. 给test.py、pywhatkit的缓存目录(一般为用户主目录下的.pywhatkit文件夹)配置Web运行用户的可读可执行权限
    2. sendwhatmsg_instantly方法需要调用浏览器打开WhatsApp Web,Web运行用户默认没有图形界面访问权限,可在Python代码开头增加显示环境变量配置:
    import os
    os.environ['DISPLAY'] = ':0'
    # 以下为你原有代码
    import sys
    import pywhatkit as kit
    
    who = sys.argv[1]
    kit.sendwhatmsg_instantly(who, "I send from PHP and Python, ohmygosh!")
    
    如果你用的是无图形界面的服务器,需要安装xvfb模拟图形环境,命令改为xvfb-run /usr/bin/python3 你的脚本绝对路径。
  • 捕获Python错误输出
    你当前用exec只能拿到标准输出内容,Python运行报错会输出到stderr,修改PHP命令把stderr重定向到stdout就能看到完整报错:
    $cmd = "/usr/bin/python3 /var/www/project/test.py ".escapeshellarg($para1)." 2>&1";
    
    执行后输出的$output数组中就能看到具体报错,比如缺少依赖、浏览器未登录WhatsApp Web、找不到浏览器等问题。
  • 额外注意
    pywhatkit依赖默认浏览器已经提前登录过WhatsApp Web,如果是线上服务使用,建议更换为无头浏览器方案或者官方WhatsApp业务接口,避免依赖图形环境导致的不稳定问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:45:10