duanjian4698
2017-01-22 19:08
浏览 1.3k
已采纳

找不到类Firebase \ JWT \ JWT

I want to use pure firebase/php-jwt library in my code. Firstly, I go to /var/www/html/ and like the official library page is suggesting, I do this

composer require firebase/php-jwt

After I run this command, I see that a new vendor folder is created inside /var/www/html/ with a lot of files and subfolders. I then create my token.php file right in /var/www/html/ with contents similar to that from the official page:

<?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);

However, when I go to localhost/token.php, I get this error message:

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

I'm not sure if it matters, but my PHP version is 7.0.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douwen2072 2017-01-22 19:17
    已采纳

    As per the documentation, you need to include the autoloader.

    E.g., in your php file:

    require __DIR__ . '/vendor/autoload.php';
    

    But... typically your vendor folder would be at the same level than your html folder (the one where you are serving content).

    E.g.:

    - Project root
    --- vendor
    --- html
    ----- index.php
    

    Then in your index.php you'd do:

     require __DIR__ . '../vendor/autoload.php';
    

    It is nice that you trying to use composer and modules, but if I were you I'd try to read on a bit about php's autoloading features, so you understand what's going on, and how you can profit from them.

    点赞 打赏 评论
  • dsz1966 2018-01-15 06:46

    If not using composer for maintaining the structure. just remove

    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
    

    form your JWT.php file. It works fine for me know.

    点赞 打赏 评论
  • dozc1071 2019-05-09 07:23

    depends whether you are using composer or not, in case of not using composer try to remove the use part:

    namespace Firebase\JWT;
    use \DomainException;
    use \InvalidArgumentException;
    use \UnexpectedValueException;
    use \DateTime;
    

    and if you are using composer make sure your autoloader if loaded

    点赞 打赏 评论

相关推荐 更多相似问题