我理解这与库和我的服务器之间的时区差异有关。
我将PHP脚本设置为使用UTC时区。我真的不确定如何解决这个问题。互联网上似乎没有太多的东西可以解决这个问题。我尝试更改JWT类的回旋余地,但仍然收到问题。代码发布在下面。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
date_default_timezone_set('UTC');
include "../../inc/dbinfo.inc";
require '../vendor/vendor/autoload.php';
use \Firebase\JWT\JWT;
JWT::$leeway = 60;
?>
我也试过了:
JWT:$leeway += 60;
我正在使用来自Amazon Web Services的EC2实例。我还使用Firebase JWT api来生成令牌。
编辑:如果我没有提供足够的信息,请让我知道。如果有更好的方法来生成JWT,也请让我知道。我在图书馆的自动取款机上遇到了很多问题。
下面是我如何创建令牌的方法...
date_default_timezone_set('UTC');
use \Firebase\JWT\JWT;
$currentTimeInMillis = round(microtime(true) * 1000);
$token = array(
"iss" => "http://example.org",
"sub" => $username,
"iat" => $currentTimeInMillis,
"exp" => $currentTimeInMillis + 256000000);
$jwt = JWT::encode($token, $key);
发布于 2018-12-07 04:28:53
问题出在下面这一行:
$currentTimeInMillis = round(microtime(true) * 1000);
如果您运行此命令:
echo date('Y-m-d', round(microtime(true) * 1000));
您看到了50901-06-21
,它指出了您的问题。移除圆角零件:
$currentTimeInMillis = microtime(true);
https://stackoverflow.com/questions/53658600
复制相似问题