Themes Not Appearing in Dashboard After Updating to OJS 3.5.0-2

Hi everyone,

After updating my site to OJS 3.5.0-2, all custom/alternate themes stopped working.

What’s happening:

  • When I install or update any theme, OJS shows “Installed successfully”.

  • But the themes do NOT appear in Website Settings → Appearance.

  • They also do NOT appear in the Installed Plugins list.

  • Only the default theme works, and it’s the only one visible in the interface.

What I already tried:

  • Clearing template and data caches.

  • Reinstalling themes.

  • Checking permissions on plugins/themes/.

  • Confirming theme compatibility with OJS 3.5.

Has anyone else faced this issue in 3.5.0-2 or knows what might cause this?

Thanks for any help!

Hi @Raqeeb_Al-Naqeeb, are you installing the plugins through the plugin gallery? Do you see any errors in your PHP error log?

Hello And Thanks for Reply Dear @kaitlin ,

I’ve just removed all themes installed and cleaned the error_log and installed the classic theme only from the gallery, Plaease check the following fatal errors only on the error_log I get:


text/x-generic error_log ( ASCII text, with very long lines )

[05-Dec-2025 17:30:54 Asia/Baghdad] Instantiation of the plugin generic/pln has failed
Error: Class "PKP\notification\PKPNotification" not found in /************************/plugins/generic/pln/PlnPlugin.php:59
Stack trace:
#0 /************************/lib/pkp/classes/plugins/PluginRegistry.php(210): [constant expression]()
#1 /************************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('generic', 'pln')
#2 /************************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('generic')
#3 /************************/lib/pkp/classes/controllers/grid/plugins/PluginGridHandler.php(193): PKP\plugins\PluginRegistry::loadCategory('generic')
#4 /************************/controllers/grid/settings/plugins/SettingsPluginGridHandler.php(50): PKP\controllers\grid\plugins\PluginGridHandler->loadCategoryData(Object(APP\core\Request), 'generic', Array)
#5 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(148): APP\controllers\grid\settings\plugins\SettingsPluginGridHandler->loadCategoryData(Object(APP\core\Request), 'generic', Array)
#6 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(540): PKP\controllers\grid\CategoryGridHandler->getGridCategoryDataElements(Object(APP\core\Request), 'generic')
#7 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(517): PKP\controllers\grid\CategoryGridHandler->_renderCategoryInternally(Object(APP\core\Request), Object(PKP\controllers\grid\plugins\PluginCategoryGridRow))
#8 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(322): PKP\controllers\grid\CategoryGridHandler->_renderCategoriesInternally(Object(APP\core\Request))
#9 /************************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\CategoryGridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#10 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#11 /************************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#12 /************************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#13 /************************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#14 /************************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#15 /************************/index.php(21): PKP\core\PKPApplication->execute()
#16 {main}
.
.
.
.
.
[05-Dec-2025 17:31:05 Asia/Baghdad] Instantiation of the plugin generic/pln has failed
Error: Class "PKP\notification\PKPNotification" not found in /************************/plugins/generic/pln/PlnPlugin.php:59
Stack trace:
#0 /************************/lib/pkp/classes/plugins/PluginRegistry.php(210): [constant expression]()
#1 /************************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('generic', 'pln')
#2 /************************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('generic')
#3 /************************/lib/pkp/classes/plugins/PluginRegistry.php(194): PKP\plugins\PluginRegistry::loadCategory('generic', false)
#4 [internal function]: PKP\plugins\PluginRegistry::PKP\plugins\{closure}(Array, 'generic')
#5 /************************/lib/pkp/classes/plugins/PluginRegistry.php(194): array_reduce(Array, Object(Closure), Array)
#6 /************************/lib/pkp/classes/install/Installer.php(120): PKP\plugins\PluginRegistry::loadAllPlugins()
#7 /************************/classes/install/Install.php(40): PKP\install\Installer->__construct('/***************...', Array, true)
#8 /************************/lib/pkp/classes/plugins/PluginHelper.php(141): APP\install\Install->__construct(Array, '/***************...', true)
#9 /************************/lib/pkp/classes/plugins/PluginHelper.php(81): PKP\plugins\PluginHelper->PKP\plugins\{closure}('/tmp/classic-v1...')
#10 /************************/lib/pkp/classes/plugins/PluginHelper.php(107): PKP\plugins\PluginHelper->extractPlugin('/tmp/pluginMWTD...', 'classic-v1_1_3-...', Object(Closure))
#11 /************************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(328): PKP\plugins\PluginHelper->installPlugin('/tmp/pluginMWTD...', 'classic-v1_1_3-...')
#12 [internal function]: PKP\controllers\grid\plugins\PluginGalleryGridHandler->installPlugin(Array, Object(APP\core\Request))
#13 /************************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#14 /************************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#15 /************************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#16 /************************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#17 /************************/index.php(21): PKP\core\PKPApplication->execute()
#18 {main}
[05-Dec-2025 17:31:05 Asia/Baghdad] Instantiation of the plugin themes/classic has failed
TypeError: PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin(): Return value must be of type ?PKP\plugins\Plugin, int returned in /************************/lib/pkp/classes/plugins/PluginRegistry.php:281
Stack trace:
#0 /************************/lib/pkp/classes/plugins/PluginRegistry.php(211): PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin('themes', 'classic')
#1 /************************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('themes', 'classic')
#2 /************************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('themes')
#3 /************************/lib/pkp/classes/plugins/PluginRegistry.php(194): PKP\plugins\PluginRegistry::loadCategory('themes', false)
#4 [internal function]: PKP\plugins\PluginRegistry::PKP\plugins\{closure}(Array, 'themes')
#5 /************************/lib/pkp/classes/plugins/PluginRegistry.php(194): array_reduce(Array, Object(Closure), Array)
#6 /************************/lib/pkp/classes/install/Installer.php(120): PKP\plugins\PluginRegistry::loadAllPlugins()
#7 /************************/classes/install/Install.php(40): PKP\install\Installer->__construct('/***************...', Array, true)
#8 /************************/lib/pkp/classes/plugins/PluginHelper.php(141): APP\install\Install->__construct(Array, '/***************...', true)
#9 /************************/lib/pkp/classes/plugins/PluginHelper.php(81): PKP\plugins\PluginHelper->PKP\plugins\{closure}('/tmp/classic-v1...')
#10 /************************/lib/pkp/classes/plugins/PluginHelper.php(107): PKP\plugins\PluginHelper->extractPlugin('/tmp/pluginMWTD...', 'classic-v1_1_3-...', Object(Closure))
#11 /************************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(328): PKP\plugins\PluginHelper->installPlugin('/tmp/pluginMWTD...', 'classic-v1_1_3-...')
#12 [internal function]: PKP\controllers\grid\plugins\PluginGalleryGridHandler->installPlugin(Array, Object(APP\core\Request))
#13 /************************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#14 /************************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#15 /************************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#16 /************************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#17 /************************/index.php(21): PKP\core\PKPApplication->execute()
#18 {main}
[05-Dec-2025 17:31:07 Asia/Baghdad] Instantiation of the plugin generic/pln has failed
Error: Class "PKP\notification\PKPNotification" not found in /************************/plugins/generic/pln/PlnPlugin.php:59
Stack trace:
#0 /************************/lib/pkp/classes/plugins/PluginRegistry.php(210): [constant expression]()
#1 /************************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('generic', 'pln')
#2 /************************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('generic')
#3 /************************/lib/pkp/classes/controllers/grid/plugins/PluginGridHandler.php(193): PKP\plugins\PluginRegistry::loadCategory('generic')
#4 /************************/controllers/grid/settings/plugins/SettingsPluginGridHandler.php(50): PKP\controllers\grid\plugins\PluginGridHandler->loadCategoryData(Object(APP\core\Request), 'generic', Array)
#5 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(148): APP\controllers\grid\settings\plugins\SettingsPluginGridHandler->loadCategoryData(Object(APP\core\Request), 'generic', Array)
#6 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(540): PKP\controllers\grid\CategoryGridHandler->getGridCategoryDataElements(Object(APP\core\Request), 'generic')
#7 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(517): PKP\controllers\grid\CategoryGridHandler->_renderCategoryInternally(Object(APP\core\Request), Object(PKP\controllers\grid\plugins\PluginCategoryGridRow))
#8 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(322): PKP\controllers\grid\CategoryGridHandler->_renderCategoriesInternally(Object(APP\core\Request))
#9 /************************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\CategoryGridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#10 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#11 /************************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#12 /************************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#13 /************************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#14 /************************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#15 /************************/index.php(21): PKP\core\PKPApplication->execute()
#16 {main}
[05-Dec-2025 17:31:07 Asia/Baghdad] Instantiation of the plugin themes/classic has failed
TypeError: PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin(): Return value must be of type ?PKP\plugins\Plugin, int returned in /************************/lib/pkp/classes/plugins/PluginRegistry.php:281
Stack trace:
#0 /************************/lib/pkp/classes/plugins/PluginRegistry.php(211): PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin('themes', 'classic')
#1 /************************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('themes', 'classic')
#2 /************************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('themes')
#3 /************************/lib/pkp/classes/controllers/grid/plugins/PluginGridHandler.php(193): PKP\plugins\PluginRegistry::loadCategory('themes')
#4 /************************/controllers/grid/settings/plugins/SettingsPluginGridHandler.php(50): PKP\controllers\grid\plugins\PluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#5 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(148): APP\controllers\grid\settings\plugins\SettingsPluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#6 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(540): PKP\controllers\grid\CategoryGridHandler->getGridCategoryDataElements(Object(APP\core\Request), 'themes')
#7 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(517): PKP\controllers\grid\CategoryGridHandler->_renderCategoryInternally(Object(APP\core\Request), Object(PKP\controllers\grid\plugins\PluginCategoryGridRow))
#8 /************************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(322): PKP\controllers\grid\CategoryGridHandler->_renderCategoriesInternally(Object(APP\core\Request))
#9 /************************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\CategoryGridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#10 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#11 /************************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#12 /************************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#13 /************************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#14 /************************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#15 /************************/index.php(21): PKP\core\PKPApplication->execute()
#16 {main}

Thanks for your help in advance!

Hi @Raqeeb_Al-Naqeeb, some of these errors are related to the PLN plugin (PKP Preservation Network Plugin) - you will need to disable this plugin, as it’s not yet upgraded for ojs 3.5, so you have an unsupported version enabled.

Can you try first disabling and removing the PLN plugin, then see if the theme errors still occur and re-check the logs?

Thanks dear @kaitlin

I did but I got another issue, the gallery just loading without any plugin showing up!!

[05-Dec-2025 19:00:11 Asia/Baghdad] cURL error 28: Connection timed out after 10000 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://pkp.sfu.ca/ojs/xml/plugins.xml?application=ojs2&version=3.5.0.2
[05-Dec-2025 19:00:11 Asia/Baghdad] PHP Deprecated:  DOMDocument::loadXML(): Passing null to parameter #1 ($source) of type string is deprecated in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:11 Asia/Baghdad] PHP Fatal error:  Uncaught ValueError: DOMDocument::loadXML(): Argument #1 ($source) must not be empty in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php:121
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(121): DOMDocument->loadXML('')
#1 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(56): PKP\plugins\PluginGalleryDAO->_getDocument()
#2 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(364): PKP\plugins\PluginGalleryDAO->getNewestCompatible(Object(APP\core\Application))
#3 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(212): PKP\controllers\grid\plugins\PluginGalleryGridHandler->_getSpecifiedPlugin(Object(APP\core\Request))
#4 [internal function]: PKP\controllers\grid\plugins\PluginGalleryGridHandler->viewPlugin(Array, Object(APP\core\Request))
#5 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#6 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#7 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#8 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#9 /***************/index.php(21): PKP\core\PKPApplication->execute()
#10 {main}
  thrown in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:16 Asia/Baghdad] cURL error 28: Connection timed out after 10001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://pkp.sfu.ca/ojs/xml/plugins.xml?application=ojs2&version=3.5.0.2
[05-Dec-2025 19:00:16 Asia/Baghdad] PHP Deprecated:  DOMDocument::loadXML(): Passing null to parameter #1 ($source) of type string is deprecated in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:16 Asia/Baghdad] PHP Fatal error:  Uncaught ValueError: DOMDocument::loadXML(): Argument #1 ($source) must not be empty in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php:121
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(121): DOMDocument->loadXML('')
#1 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(56): PKP\plugins\PluginGalleryDAO->_getDocument()
#2 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(364): PKP\plugins\PluginGalleryDAO->getNewestCompatible(Object(APP\core\Application))
#3 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(212): PKP\controllers\grid\plugins\PluginGalleryGridHandler->_getSpecifiedPlugin(Object(APP\core\Request))
#4 [internal function]: PKP\controllers\grid\plugins\PluginGalleryGridHandler->viewPlugin(Array, Object(APP\core\Request))
#5 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#6 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#7 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#8 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#9 /***************/index.php(21): PKP\core\PKPApplication->execute()
#10 {main}
  thrown in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:17 Asia/Baghdad] cURL error 28: Connection timed out after 10001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://pkp.sfu.ca/ojs/xml/plugins.xml?application=ojs2&version=3.5.0.2
[05-Dec-2025 19:00:17 Asia/Baghdad] PHP Deprecated:  DOMDocument::loadXML(): Passing null to parameter #1 ($source) of type string is deprecated in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:17 Asia/Baghdad] PHP Fatal error:  Uncaught ValueError: DOMDocument::loadXML(): Argument #1 ($source) must not be empty in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php:121
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(121): DOMDocument->loadXML('')
#1 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(56): PKP\plugins\PluginGalleryDAO->_getDocument()
#2 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(155): PKP\plugins\PluginGalleryDAO->getNewestCompatible(Object(APP\core\Application), NULL, NULL)
#3 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(367): PKP\controllers\grid\plugins\PluginGalleryGridHandler->loadData(Object(APP\core\Request), Array)
#4 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(1189): PKP\controllers\grid\GridHandler->getGridDataElements(Object(APP\core\Request))
#5 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(1065): PKP\controllers\grid\GridHandler->renderGridBodyPartsInternally(Object(APP\core\Request))
#6 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\GridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#7 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#8 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#9 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#10 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#11 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#12 /***************/index.php(21): PKP\core\PKPApplication->execute()
#13 {main}
  thrown in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:40 Asia/Baghdad] cURL error 28: Connection timed out after 10001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://pkp.sfu.ca/ojs/xml/plugins.xml?application=ojs2&version=3.5.0.2
[05-Dec-2025 19:00:40 Asia/Baghdad] PHP Deprecated:  DOMDocument::loadXML(): Passing null to parameter #1 ($source) of type string is deprecated in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:00:40 Asia/Baghdad] PHP Fatal error:  Uncaught ValueError: DOMDocument::loadXML(): Argument #1 ($source) must not be empty in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php:121
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(121): DOMDocument->loadXML('')
#1 /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php(56): PKP\plugins\PluginGalleryDAO->_getDocument()
#2 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(155): PKP\plugins\PluginGalleryDAO->getNewestCompatible(Object(APP\core\Application), NULL, NULL)
#3 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(367): PKP\controllers\grid\plugins\PluginGalleryGridHandler->loadData(Object(APP\core\Request), Array)
#4 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(1189): PKP\controllers\grid\GridHandler->getGridDataElements(Object(APP\core\Request))
#5 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(1065): PKP\controllers\grid\GridHandler->renderGridBodyPartsInternally(Object(APP\core\Request))
#6 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\GridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#7 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#8 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#9 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#10 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#11 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#12 /***************/index.php(21): PKP\core\PKPApplication->execute()
#13 {main}
  thrown in /***************/lib/pkp/classes/plugins/PluginGalleryDAO.php on line 121
[05-Dec-2025 19:04:57 Asia/Baghdad] Instantiation of the plugin themes/classic has failed
TypeError: PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin(): Return value must be of type ?PKP\plugins\Plugin, int returned in /***************/lib/pkp/classes/plugins/PluginRegistry.php:281
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginRegistry.php(211): PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin('themes', 'classic')
#1 /***************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('themes', 'classic')
#2 /***************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('themes')
#3 /***************/lib/pkp/classes/plugins/PluginRegistry.php(194): PKP\plugins\PluginRegistry::loadCategory('themes', false)
#4 [internal function]: PKP\plugins\PluginRegistry::PKP\plugins\{closure}(Array, 'themes')
#5 /***************/lib/pkp/classes/plugins/PluginRegistry.php(194): array_reduce(Array, Object(Closure), Array)
#6 /***************/lib/pkp/classes/install/Installer.php(120): PKP\plugins\PluginRegistry::loadAllPlugins()
#7 /***************/classes/install/Install.php(40): PKP\install\Installer->__construct('/***************...', Array, true)
#8 /***************/lib/pkp/classes/plugins/PluginHelper.php(141): APP\install\Install->__construct(Array, '/***************...', true)
#9 /***************/lib/pkp/classes/plugins/PluginHelper.php(81): PKP\plugins\PluginHelper->PKP\plugins\{closure}('/tmp/classic-v1...')
#10 /***************/lib/pkp/classes/plugins/PluginHelper.php(107): PKP\plugins\PluginHelper->extractPlugin('/tmp/pluginCzMB...', 'classic-v1_1_3-...', Object(Closure))
#11 /***************/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.php(328): PKP\plugins\PluginHelper->installPlugin('/tmp/pluginCzMB...', 'classic-v1_1_3-...')
#12 [internal function]: PKP\controllers\grid\plugins\PluginGalleryGridHandler->installPlugin(Array, Object(APP\core\Request))
#13 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#14 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#15 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#16 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#17 /***************/index.php(21): PKP\core\PKPApplication->execute()
#18 {main}
[05-Dec-2025 19:04:59 Asia/Baghdad] Instantiation of the plugin themes/classic has failed
TypeError: PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin(): Return value must be of type ?PKP\plugins\Plugin, int returned in /***************/lib/pkp/classes/plugins/PluginRegistry.php:281
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginRegistry.php(211): PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin('themes', 'classic')
#1 /***************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('themes', 'classic')
#2 /***************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('themes')
#3 /***************/lib/pkp/classes/controllers/grid/plugins/PluginGridHandler.php(193): PKP\plugins\PluginRegistry::loadCategory('themes')
#4 /***************/controllers/grid/settings/plugins/SettingsPluginGridHandler.php(50): PKP\controllers\grid\plugins\PluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#5 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(148): APP\controllers\grid\settings\plugins\SettingsPluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#6 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(540): PKP\controllers\grid\CategoryGridHandler->getGridCategoryDataElements(Object(APP\core\Request), 'themes')
#7 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(517): PKP\controllers\grid\CategoryGridHandler->_renderCategoryInternally(Object(APP\core\Request), Object(PKP\controllers\grid\plugins\PluginCategoryGridRow))
#8 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(322): PKP\controllers\grid\CategoryGridHandler->_renderCategoriesInternally(Object(APP\core\Request))
#9 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\CategoryGridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#10 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#11 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#12 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#13 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#14 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#15 /***************/index.php(21): PKP\core\PKPApplication->execute()
#16 {main}
[05-Dec-2025 19:05:06 Asia/Baghdad] Instantiation of the plugin themes/classic has failed
TypeError: PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin(): Return value must be of type ?PKP\plugins\Plugin, int returned in /***************/lib/pkp/classes/plugins/PluginRegistry.php:281
Stack trace:
#0 /***************/lib/pkp/classes/plugins/PluginRegistry.php(211): PKP\plugins\PluginRegistry::deprecatedInstantiatePlugin('themes', 'classic')
#1 /***************/lib/pkp/classes/plugins/PluginRegistry.php(263): PKP\plugins\PluginRegistry::instantiatePlugin('themes', 'classic')
#2 /***************/lib/pkp/classes/plugins/PluginRegistry.php(128): PKP\plugins\PluginRegistry::loadFromDisk('themes')
#3 /***************/lib/pkp/classes/controllers/grid/plugins/PluginGridHandler.php(193): PKP\plugins\PluginRegistry::loadCategory('themes')
#4 /***************/controllers/grid/settings/plugins/SettingsPluginGridHandler.php(50): PKP\controllers\grid\plugins\PluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#5 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(148): APP\controllers\grid\settings\plugins\SettingsPluginGridHandler->loadCategoryData(Object(APP\core\Request), 'themes', Array)
#6 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(540): PKP\controllers\grid\CategoryGridHandler->getGridCategoryDataElements(Object(APP\core\Request), 'themes')
#7 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(517): PKP\controllers\grid\CategoryGridHandler->_renderCategoryInternally(Object(APP\core\Request), Object(PKP\controllers\grid\plugins\PluginCategoryGridRow))
#8 /***************/lib/pkp/classes/controllers/grid/CategoryGridHandler.php(322): PKP\controllers\grid\CategoryGridHandler->_renderCategoriesInternally(Object(APP\core\Request))
#9 /***************/lib/pkp/classes/controllers/grid/GridHandler.php(737): PKP\controllers\grid\CategoryGridHandler->doSpecificFetchGridActions(Array, Object(APP\core\Request), Object(APP\template\TemplateManager))
#10 [internal function]: PKP\controllers\grid\GridHandler->fetchGrid(Array, Object(APP\core\Request))
#11 /***************/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\core\Request))
#12 /***************/lib/pkp/classes/core/PKPComponentRouter.php(265): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\core\Request), Array)
#13 /***************/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPComponentRouter->route(Object(APP\core\Request))
#14 /***************/lib/pkp/classes/core/PKPApplication.php(429): PKP\core\Dispatcher->dispatch(Object(APP\core\Request))
#15 /***************/index.php(21): PKP\core\PKPApplication->execute()
#16 {main}

Dear @kaitlin,

Thank you for all your help!

I wanted to share my findings in case it helps others:

Root Cause: The PLN (Preservation Network) plugin appears to be the main cause of the issues I was experiencing. It references the class PKP\notification\PKPNotification which no longer exists in OJS 3.5.

Plugin Gallery Issue: I also noticed a problem with installing themes directly from the Plugin Gallery. When attempting to install the Classic theme through the gallery, it failed with a TypeError in PluginRegistry.php.

Workaround: What worked for me was:

  1. Downloading the release version of the Classic theme directly from GitHub

  2. Uploading it manually to /plugins/themes/

  3. The theme appeared in the Installed Plugins list immediately

  4. Simply enabled it — and it works!

It seems the Plugin Gallery installation process itself may have a bug when handling certain theme installations in OJS 3.5.

Hope this helps others facing similar issues.