问题
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.
回答1:
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.
回答2:
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.
回答3:
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
回答4:
I added only one line to your code to get my code to work:
require __DIR__ . '\vendor\autoload.php';
use Firebase\JWT\JWT;
/* the rest of your code after this */
I did not have to modify the jwt.php file at all.
来源:https://stackoverflow.com/questions/41795034/class-firebase-jwt-jwt-not-found