Installed plugins tab endlessly loading / import/export tab empty

I think this is related to some plugins which were upgraded recently - at least, the problem appeared when this was done.

image

Whenever clicking on to the ‘Installed plugin’ tab, the loading icon just shows endlessly.

Weirdly, there are no console errors, and PHP error log shows nothing either

Clicking on to the gallery tab works, and if I click on to a plugin I know is installed, it will popup and tell me ‘this plugin is installed’

In order to try and undo the problem, I’ve removed the plugins that were upgraded from the relevant plugin directories.

I’ve also Installed = Off and rerun the upgrade in case there are database things that need updating.

Problem still exists though

Not sure if it’s related, but even AFTER removing the plugin folders I still see the ‘this plugin is installed’ message when I click on the appropriate plugin in the gallery

So, couple of questions:

  1. how do I PROPERLY disable/uninstall plugins - I’m guessing there’s a DB element in play
  2. how do I fix this problem when there’s no debugging information pointing to an issue?

Not an issue, but potentially relevant - the locales tab also endlessly loads
Other tabs all load fine, and the journal is functional (apart from being able to access plugins & import/export)

As some extra background if I try and install a plugin that we’ve never used, this doesn’t seem to work - the install-plugin?rowId= call is made after I press ‘OK’, and gets HTTP200 response, but the response is just 2 empty lines (and the ‘Install plugin?’ window doesn’t close)

image

Hi @believedigital,

Can you also share what version of OJS you’re running, please?

-Roger
PKP Team

Hi Roger,

Sorry, it’s 3.2.1.2

We are scheduled to update to the new release from last week later in the month, but I’d feel more comfortable doing this WITHOUT this problem, in case it compounds and causes further issues down the line

Hi @believedigital, I suspect that there is a PHP error in the server error logs. It may be that you’re looking at the wrong log file.

You can also inspect the request to load the “installed plugins” in the network tab, as you’ve done with the install plugin request. You will likely see a request that returns a 500 response when trying to load the tab.

Thanks Nate - sorry, should have mentioned that. Have checked in network tab and there’s no 500 being returned when loading the plugins tab either, that’s what is so weird.

And in terms of error log, we definitely DO see errors related to other sections of the site recorded, but if I “watch tail error.log” and then load the plugins tab absolutely nothing happens

I believe this is the call that should load this tab:

$$$call$$$/grid/settings/plugins/settings-plugin-grid/fetch-grid?_=1618481298736

It returns status 200, but again, the response is an empty 2 liner

I’m guessing there should be some JSON in here:

image

Hmm, yeah, here is what the request returns for me:

{
	"status": true,
	"content": "\n<script>\n\t$(function() { ...", /* lots more here */
	"elementId": "0",
	"events": null
}

I’m not sure why it would be returning nothing at all, but it’s possible that a plugin which is not enabled is causing some error as it’s scanned for this table. Do you have any custom plugins in the /plugins directory? If so, try removing them to see if that helps anything…

Yes, thought that was probably the case.

I’m a little in the dark about the plugin install/uninstall process. We don’t have any custom plugins, but can I literally just take the folders out of the plugin directory and add them back in one at a time to find the culprit?

Are there any database tables that need amending or anything as I remove plugins?

I’m not certain. Is this a live site? If possible, I recommend trying to debug on a test site rather than your live site. But I suspect that you can safely remove any plugin that is returned with this SQL query:

select * from plugin_settings where setting_name="enabled" and setting_value="0";

You might want to set the theme to the default first (and not remove that one).