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.
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.
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.
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