Php Fatal Error: Uncaught InvalidArgumentException: Key may not be empty

Hi,
Today, I noticed this fatal error in my PHP error log. I don’t know exactly what has caused this error. Please guide me on how to resolve this error.
My OJS : 3.2.1.2
PHP: 7.4

[10-Jan-2021 02:00:43 America/New_York] PHP Notice:  Undefined offset: 1 in /home/seisense/journal.seisense.com/pages/article/ArticleHandler.inc.php on line 47
[10-Jan-2021 02:00:43 America/New_York] PHP Fatal error:  Uncaught InvalidArgumentException: Key may not be empty in /home/seisense/journal.seisense.com/lib/pkp/lib/vendor/firebase/php-jwt/src/JWT.php:74
Stack trace:
#0 /home/seisense/journal.seisense.com/pages/article/ArticleHandler.inc.php(49): Firebase\JWT\JWT::decode(NULL, '', Array)
#1 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPRouter.inc.php(383): ArticleHandler->authorize(Object(Request), Array, Array)
#2 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPPageRouter.inc.php(231): PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(Request), Array, false)
#3 /home/seisense/journal.seisense.com/lib/pkp/classes/core/Dispatcher.inc.php(143): PKPPageRouter->route(Object(Request))
#4 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPApplication.inc.php(281): Dispatcher->dispatch(Object(Request))
#5 /home/seisense/journal.seisense.com/index.php(68): PKPApplication->execute()
#6 {main}
  thrown in /home/seisense/journal.seisense.com/lib/pkp/lib/vendor/firebase/php-jwt/src/JWT.php on line 74

Thanks

Thanks for the report @seisense. It looks like this can occur if an incorrect Authorization header is sent with the request. I’ve filed an issue here: Authorization header with JWT can cause fatal error · Issue #6563 · pkp/pkp-lib · GitHub

Hi,
I thought with the update of OJS to 3.3.0.3, this error is gone now. But today, I noticed this error once again in my PHP error log:

[22-Feb-2021 06:19:26 America/New_York] PHP Notice:  Undefined offset: 1 in /home/seisense/journal.seisense.com/pages/article/ArticleHandler.inc.php on line 50
[22-Feb-2021 06:19:26 America/New_York] PHP Fatal error:  Uncaught InvalidArgumentException: Key may not be empty in /home/seisense/journal.seisense.com/lib/pkp/lib/vendor/firebase/php-jwt/src/JWT.php:79
Stack trace:
#0 /home/seisense/journal.seisense.com/pages/article/ArticleHandler.inc.php(52): Firebase\JWT\JWT::decode(NULL, '', Array)
#1 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPRouter.inc.php(387): ArticleHandler->authorize(Object(Request), Array, Array)
#2 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPPageRouter.inc.php(246): PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(Request), Array, false)
#3 /home/seisense/journal.seisense.com/lib/pkp/classes/core/Dispatcher.inc.php(144): PKPPageRouter->route(Object(Request))
#4 /home/seisense/journal.seisense.com/lib/pkp/classes/core/PKPApplication.inc.php(364): Dispatcher->dispatch(Object(Request))
#5 /home/seisense/journal.seisense.com/index.php(68): PKPApplication->execute()
#6 {main}
  thrown in /home/seisense/journal.seisense.com/lib/pkp/lib/vendor/firebase/php-jwt/src/JWT.php on line 79

I am witnessing that PHP notice appearing everytime just before this fatal error. So, I include this noitce line as well. This might be useful for you to figure out the issue.
Looking forward to your input.
Thanks

You’re right, it looks like this did not get cherry-picked over into the stable branch, so it didn’t make it out with OJS 3.3.0.3. I’ve cherry-picked it over now so it should go out with 3.3.0.4.

This error only happens when a request is made with an invalid Authorization header. You might want to track down what requests are sending this header and why.