
If you manage an Open Journal Systems (OJS) installation, few things are as frustrating as clicking on the Plugin Gallery and seeing nothing but a spinning wheel — indefinitely. No list of available plugins, no error message on screen, just a loading animation that never stops. This guide walks you through why this happens and exactly how to fix it.
Table of Contents
The Root Cause: Why the Plugin Page Gets Stuck Loading
When OJS loads the Plugin Gallery or the Installed Plugins page, it scans every plugin folder inside plugins/ — including both active and inactive ones. It indexes each plugin’s metadata and makes sure its required files are accessible. If even a single plugin folder is broken, missing critical files, or corrupt, OJS may throw a PHP fatal error during this scan, and the page hangs.

In a recent case documented on the PKP Community Forum, a journal administrator using OJS 3.0.13 found their Plugin Gallery stuck loading for days. Checking the PHP error log revealed the exact cause:
PHP Fatal error: require_once(): Failed opening required
'/storage/www/ejournals/ojsjoj/plugins/generic/dataverse/classes/draftDatasetFile/DraftDatasetFileDAO.inc.php'
The Dataverse plugin had a missing subfolder — draftDatasetFile/ — and OJS could not complete the plugin index. Even though the admin had not touched the site, the folder was gone, possibly due to a failed plugin update, interrupted file transfer, or a server-side cleanup script.
Step 1: Check Your PHP Error Log
The Plugin Gallery UI rarely shows the actual error. The information you need is in your server’s PHP error log. Here is how to find it:
- Shared hosting / cPanel: Look for an
error_logfile in your OJS root directory, or use the cPanel “Errors” or “PHP Error Log” section. - VPS / Dedicated server (Apache): Typically found at
/var/log/apache2/error.logor/var/log/httpd/error_log. - VPS / Dedicated server (Nginx + PHP-FPM): Check
/var/log/php-fpm/www-error.logor similar. - If you don’t know where it is: Add these lines to your OJS
config.inc.phptemporarily to force errors to display (remove them after debugging):
[debug]
display_errors = On
Once you have the log, look for PHP Fatal error entries that mention plugins/. The error message will tell you exactly which plugin is broken and which file is missing.
Step 2: SSH into Your Server and Inspect the Plugin Folder
Using the path from your error log, navigate to the problematic plugin’s directory. In our example:
cd /storage/www/ejournals/ojsjoj/plugins/generic/dataverse/classes/
ls -lah
Compare the output against a fresh copy of the plugin from its official repository. If you see missing folders or files (like draftDatasetFile/ in the example), the plugin installation is corrupt. This is the culprit.
Step 3: Safely Remove the Broken Plugin from the Filesystem
The recommended approach — confirmed by PKP team member Jonas Raoni on the forum — is to delete the broken plugin folder directly from the server’s filesystem, then reinstall it.
Before you delete anything, back up the plugin folder:
cp -r /path/to/ojs/plugins/generic/broken-plugin /tmp/broken-plugin-backup
Then remove it:
rm -rf /path/to/ojs/plugins/generic/broken-plugin
Important note about the database: In most cases, deleting the plugin folder from the filesystem is enough. OJS automatically detects that the plugin is gone and updates its internal state when you next visit the Plugin Gallery. You should not need to manually delete plugin records from the database — doing so without knowing the exact plugin schema can create inconsistencies. If the plugin still appears in the list after folder deletion, clear your OJS template cache under files/cache/ first.
Step 4: Restore the Plugin Gallery
Once the broken plugin folder is removed, go back to your OJS dashboard and navigate to Settings → Website → Plugins → Plugin Gallery. The page should load normally now, showing all available plugins. You can then reinstall the previously broken plugin directly from the gallery, which downloads a fresh, intact copy.
If the Plugin Gallery still does not load, try these additional checks:
- Clear the OJS data cache: delete all contents of
cache/in your OJSfiles/directory. - Verify that your server can reach
pkp.sfu.ca(the Plugin Gallery’s remote host). A quick test:curl -I https://pkp.sfu.cafrom your server. - Check that your server’s PHP installation has the
php-xmlandphp-domextensions enabled. The Plugin Gallery XML parser requiresDOMDocument, and missing it is another known cause of loading hangs.
Step 5: Prevent This from Happening Again

Broken plugin folders are rarely caused by manual tampering. More often, they result from:
- Interrupted plugin updates: An update started but the network cut out mid-download.
- Server-side cleanup scripts: Automated scripts sometimes sweep directories they should not touch.
- Disk space or inode exhaustion: A full disk can truncate files mid-write.
To reduce the risk going forward:
- Always run OJS plugin updates during low-traffic hours on a stable connection.
- Monitor disk usage on your server so you do not run out of space.
- Keep regular backups of the entire
plugins/directory. - Consider upgrading to a recent OJS version (3.5+) — newer versions handle plugin loading errors more gracefully.
What Not to Do
- Do not copy-paste a plugin folder from another OJS installation. Plugin versions, database schemas, and compatibility differ between OJS versions, and a mismatched plugin folder can cause more damage.
- Do not manually delete plugin rows from the database. Unless you are absolutely certain about the table schema and dependencies, stick to filesystem-level cleanup and let OJS handle the rest.
- Do not rename the plugin folder to “hide” it. OJS still scans renamed folders and may still trip on the same error.
When to Escalate
If the Plugin Gallery remains broken after all these steps, the problem may be deeper. Consider:
- Posting on the PKP Community Forum with your OJS version, PHP version, and the full error log.
- Filing a bug report on the problematic plugin’s GitHub repository.
- Consulting a specialized OJS development team for professional troubleshooting, especially if you are on an older OJS version that no longer receives community patches.
If your OJS installation keeps giving you headaches — whether it’s plugin issues, theme problems, or version upgrades — the team at Open Journal Theme provides professional OJS management, hosting, and customization services designed specifically for academic publishers. We handle the technical side so you can focus on publishing quality research.