webman没有$_SERVER['HTTP_HOST'] 属性吗?怎么解决?

fengshengchang

微信的底层overtrue/wechat,使用$_SERVER['HTTP_HOST']发生了错误
代码:$wechatApp->jssdk->buildConfig(["scanQRCode"], false);
截图

1480 2 4
2个回答

walkor

overtrue/wechat 在webman下用法参考手册
https://www.workerman.net/doc/webman/components/wechat.html

  • fengshengchang 2022-03-28

    你说的这个,我有注意到的,我的用法就是跟文档里一样的,但是结果是一样的呢
    你可以是一下,其他接口都可以正常使用,就是$app->jssdk->buildConfig这个接口使用的时候有问题。
    如果不用按照您提供的问题,应该是所有接口都有使用有问题的
    我的用法是如下的,结果是一样的呢
    $config = config('wechat.official_account.default');
    $app = Factory::officialAccount($config);
    $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
    $symfony_request->headers = new HeaderBag($request->header());
    $app->rebind('request', $symfony_request);
    $scanConfigstr = $app->jssdk->buildConfig(["scanQRCode"], false);

  • fengshengchang 2022-03-28

    目前我是其他微信的接口能正常使用,唯独这个接口使用有问题

  • walkor 2022-03-28

    composer info,看下用的哪个版本的 overtrue/wechat

  • fengshengchang 2022-03-29

    overtrue/wechat的版本为5.16.4

  • walkor 2022-03-29
    $scanConfigstr = $app->jssdk->buildConfig(["scanQRCode"], false)

    改成

    $_SERVER['HTTPS'] = 'on'; // 如果你是https的话加上这句
    $_SERVER['HTTP_HOST'] = $request->host();
    $_SERVER['REQUEST_URI'] = $request->uri();
    $scanConfigstr = $app->jssdk->buildConfig(["scanQRCode"], false);

    兼容下吧。overtrue/wechat 6.x好像去掉这个了,但是需要php8.0

  • fengshengchang 2022-03-29

    好的,非常感谢,之前6.x用过,当时好像模板消息什么的很多功能还没有,所以暂时还不敢用

admin

截图

人工传入symfony Request 实例 ,否则 默认使用fpm 的$_SERVER

  • 暂无评论
年代过于久远,无法发表回答
🔝