Class Firebase\JWT\JWT 未找到
Class Firebase\JWT\JWT not found
我想在我的代码中使用纯 firebase/php-jwt 库。首先,我去 /var/www/html/
并且就像官方图书馆页面的建议一样,我这样做
composer require firebase/php-jwt
执行 运行 此命令后,我看到在 /var/www/html/
中创建了一个新的供应商文件夹,其中包含许多文件和子文件夹。然后我在 /var/www/html/
中创建我的 token.php
文件,其内容与官方页面中的内容相似:
<?php
use \Firebase\JWT\JWT;
$key = "example_key";
$token = array(
"iss" => "http://example.org",
"aud" => "http://example.com",
"iat" => 1356999524,
"nbf" => 1357000000
);
$jwt = JWT::encode($token, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
但是,当我转到 localhost/token.php 时,我收到此错误消息:
Fatal error: Uncaught Error: Class 'Firebase\JWT\JWT' not found in /var/www/html/token.php:12 Stack trace: #0 {main} thrown in /var/www/html/token.php on line 12
我不确定这是否重要,但我的 PHP 版本是 7.0。
根据 documentation,您需要包括自动加载器。
例如,在您的 php 文件中:
require __DIR__ . '/vendor/autoload.php';
但是...通常您的 vendor
文件夹与您的 html
文件夹(您提供内容的文件夹)处于同一层级 .
例如:
- Project root
--- vendor
--- html
----- index.php
然后在你的index.php中你会做:
require __DIR__ . '/../vendor/autoload.php';
很高兴你尝试使用作曲家和模块,但如果我是你,我会尝试阅读一些关于 php 的 autoloading features,这样你就会明白发生了什么以及如何从中获利。
如果不使用 composer 来维护结构。只需删除
namespace Firebase\JWT;
use \DomainException;
use \InvalidArgumentException;
use \UnexpectedValueException;
use \DateTime;
*
* JSON Web Token implementation, based on this spec:
* https://tools.ietf.org/html/rfc7519
*
* PHP version 5
*
* @category Authentication
* @package Authentication_JWT
* @author Neuman Vong <neuman@twilio.com>
* @author Anant Narayanan <anant@php.net>
* @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
* @link https://github.com/firebase/php-jwt
形成您的 JWT.php 文件。它对我来说很好用。
取决于您是否使用 Composer,
如果不使用作曲家,请尝试删除使用部分:
namespace Firebase\JWT;
use \DomainException;
use \InvalidArgumentException;
use \UnexpectedValueException;
use \DateTime;
如果您使用的是作曲家,请确保您的自动加载器已加载
我只在您的代码中添加了一行以使我的代码正常工作:
require __DIR__ . '\vendor\autoload.php';
use Firebase\JWT\JWT;
/* the rest of your code after this */
我根本不需要修改 jwt.php 文件。
当我不使用 composer 时,我只是将所有 JWT classes 加载到我的入口点 PHP 文件中,然后在 classes 中使用主命名空间而不是必须使用 JWT。例如,在我的 index.php:
require_once 'vendor/jwt/JWT.php';
require_once 'vendor/jwt/SignatureInvalidException.php';
require_once 'vendor/jwt/BeforeValidException.php';
require_once 'vendor/jwt/ExpiredException.php';
require_once 'vendor/jwt/JWK.php';
//Namespaces
use \Firebase\JWT\JWT;
在 Auth.php class 文件中:
//Import the Namespace again
use \Firebase\JWT\JWT;
当你没有自动加载器文件时,我真的不知道这是否是正确的方法,通常是非常小的项目,但它对我有用,可能其他人也在处理这个问题。但是,我认识到最好的方法是安装作曲家:)
我想在我的代码中使用纯 firebase/php-jwt 库。首先,我去 /var/www/html/
并且就像官方图书馆页面的建议一样,我这样做
composer require firebase/php-jwt
执行 运行 此命令后,我看到在 /var/www/html/
中创建了一个新的供应商文件夹,其中包含许多文件和子文件夹。然后我在 /var/www/html/
中创建我的 token.php
文件,其内容与官方页面中的内容相似:
<?php
use \Firebase\JWT\JWT;
$key = "example_key";
$token = array(
"iss" => "http://example.org",
"aud" => "http://example.com",
"iat" => 1356999524,
"nbf" => 1357000000
);
$jwt = JWT::encode($token, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
但是,当我转到 localhost/token.php 时,我收到此错误消息:
Fatal error: Uncaught Error: Class 'Firebase\JWT\JWT' not found in /var/www/html/token.php:12 Stack trace: #0 {main} thrown in /var/www/html/token.php on line 12
我不确定这是否重要,但我的 PHP 版本是 7.0。
根据 documentation,您需要包括自动加载器。
例如,在您的 php 文件中:
require __DIR__ . '/vendor/autoload.php';
但是...通常您的 vendor
文件夹与您的 html
文件夹(您提供内容的文件夹)处于同一层级 .
例如:
- Project root
--- vendor
--- html
----- index.php
然后在你的index.php中你会做:
require __DIR__ . '/../vendor/autoload.php';
很高兴你尝试使用作曲家和模块,但如果我是你,我会尝试阅读一些关于 php 的 autoloading features,这样你就会明白发生了什么以及如何从中获利。
如果不使用 composer 来维护结构。只需删除
namespace Firebase\JWT;
use \DomainException;
use \InvalidArgumentException;
use \UnexpectedValueException;
use \DateTime;
*
* JSON Web Token implementation, based on this spec:
* https://tools.ietf.org/html/rfc7519
*
* PHP version 5
*
* @category Authentication
* @package Authentication_JWT
* @author Neuman Vong <neuman@twilio.com>
* @author Anant Narayanan <anant@php.net>
* @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
* @link https://github.com/firebase/php-jwt
形成您的 JWT.php 文件。它对我来说很好用。
取决于您是否使用 Composer, 如果不使用作曲家,请尝试删除使用部分:
namespace Firebase\JWT;
use \DomainException;
use \InvalidArgumentException;
use \UnexpectedValueException;
use \DateTime;
如果您使用的是作曲家,请确保您的自动加载器已加载
我只在您的代码中添加了一行以使我的代码正常工作:
require __DIR__ . '\vendor\autoload.php';
use Firebase\JWT\JWT;
/* the rest of your code after this */
我根本不需要修改 jwt.php 文件。
当我不使用 composer 时,我只是将所有 JWT classes 加载到我的入口点 PHP 文件中,然后在 classes 中使用主命名空间而不是必须使用 JWT。例如,在我的 index.php:
require_once 'vendor/jwt/JWT.php';
require_once 'vendor/jwt/SignatureInvalidException.php';
require_once 'vendor/jwt/BeforeValidException.php';
require_once 'vendor/jwt/ExpiredException.php';
require_once 'vendor/jwt/JWK.php';
//Namespaces
use \Firebase\JWT\JWT;
在 Auth.php class 文件中:
//Import the Namespace again
use \Firebase\JWT\JWT;
当你没有自动加载器文件时,我真的不知道这是否是正确的方法,通常是非常小的项目,但它对我有用,可能其他人也在处理这个问题。但是,我认识到最好的方法是安装作曲家:)