Just to add to this: we’re having the same issue with ORCID not sending verification emails in OJS 3.5.0-4. The error is:
[13-Apr-2026 09:04:46 UTC] Error: Call to a member function getLocalizedSignature() on null in /home/radicall/ojs/journal/lib/pkp/classes/mail/traits/OrcidVariables.php:60
Further to this, I’ve temporarily resolved this in the affected OJS instance by editing ./lib/pkp/classes/mail/traits/OrcidVariables.php and changing line 60 to:
self::$principalContactSignature => $principalContact?->getLocalizedSignature(),
so that it allows null values for principalContact signature.
Thanks @SimonXIX, I’ve moved this its own thread as it seems like a related outcome, but separate issue. This does look like a bug. Would you be able to share the full stack trace of the error you shared above?
Regards,
Erik
PKP Team
Hi Erik. Sure, the full stack trace was:
[13-Apr-2026 09:04:46 UTC] Error: Call to a member function getLocalizedSignature() on null in /home/radicall/ojs/journal/lib/pkp/classes/mail/traits/OrcidVariables.php:60
Stack trace:
#0 /home/radicall/ojs/journal/lib/pkp/classes/mail/mailables/OrcidCollectAuthorId.php(39): PKP\mail\mailables\OrcidCollectAuthorId->setupOrcidVariables(‘https://orcid.o…’, Object(APP\journal\Journal))
#1 /home/radicall/ojs/journal/lib/pkp/jobs/orcid/SendAuthorMail.php(68): PKP\mail\mailables\OrcidCollectAuthorId->__construct(Object(APP\journal\Journal), Object(APP\submission\Submission), ‘https://orcid.o…’)
#2 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): PKP\jobs\orcid\SendAuthorMail->handle()
#3 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#4 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#5 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(PKP\core\PKPContainer), Array, Object(Closure))
#6 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call(Object(PKP\core\PKPContainer), Array, Array, NULL)
#7 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(126): Illuminate\Container\Container->call(Array)
#8 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(PKP\jobs\orcid\SendAuthorMail))
#9 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(PKP\jobs\orcid\SendAuthorMail))
#10 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(130): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#11 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(126): Illuminate\Bus\Dispatcher->dispatchNow(Object(PKP\jobs\orcid\SendAuthorMail), false)
#12 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}(Object(PKP\jobs\orcid\SendAuthorMail))
#13 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(PKP\jobs\orcid\SendAuthorMail))
#14 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(121): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#15 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(69): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\Queue\Jobs\DatabaseJob), Object(PKP\jobs\orcid\SendAuthorMail))
#16 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#17 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(442): Illuminate\Queue\Jobs\Job->fire()
#18 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(392): Illuminate\Queue\Worker->process(‘database’, Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#19 /home/radicall/ojs/journal/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(335): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), ‘database’, Object(Illuminate\Queue\WorkerOptions))
#20 /home/radicall/ojs/journal/lib/pkp/classes/core/PKPQueueProvider.php(102): Illuminate\Queue\Worker->runNextJob(‘database’, ‘queue’, Object(Illuminate\Queue\WorkerOptions))
#21 /home/radicall/ojs/journal/lib/pkp/classes/queue/JobRunner.php(317): PKP\core\PKPQueueProvider->runJobInQueue(Object(Illuminate\Database\Eloquent\Builder))
#22 /home/radicall/ojs/journal/lib/pkp/classes/core/PKPQueueProvider.php(153): PKP\queue\JobRunner->processJobs()
#23 [internal function]: PKP\core\PKPQueueProvider->PKP\core\{closure}()
#24 {main}