Issue while Installing QuickSubmit Plugin via Plugin Gallery in OJS 3.1.2.4

While Installing QuickSubmit Plugin v1.0.4.1 via Plugin Gallery in OJS 3.1.2.4, the following error occurs:
" The uploaded plugin archive does not contain a folder that corresponds to the plugin name. "

Same occurs when installed through “Upload Plugin” option.

Please help.

Make sure the archive file contain the right folder name corresponding to the plugin you try to install/upload.

I’m downloading the archive (tarball) from releases directly and uploading without making any change.

Also, the same error occurs if installed via “Plugin Gallery”.

Hi @milind4computing,

Where did you download the plugin archive from? There best way to discover/install plugins is through the Plugin Gallery within OJS, but barring that, make sure you’re downloading the plugin package from the “Releases” area of the github repository.

Regards,
Alec Smecher
Public Knowledge Project Team

hi @asmecher,

I downloaded the plugin from https://github.com/pkp/quickSubmit/releases/download/v1.0.4-1/quickSubmit-v1.0.4-1.tar.gz

I found this link from https://github.com/pkp/quickSubmit/releases

Also, the same error occurs if this plugin is installed via “Plugin Gallery” on fresh installation of OJS 3.1.2.4

Hi @milind4computing,

Sorry, I see you already specified that.

Die PHP have sufficient file permissions to create files/directories in the plugins directory of your OJS installation (and subdirectories of that)?

Regards,
Alec Smecher
Public Knowledge Project Team

Hi @asmecher,

Permissions 777 given recursively to the plugins directory.

No change. Error persists.

Hi @milind4computing,

Note that 777 permissions are never safe to use – they’re useful for testing but please don’t leave them that way!

How have you configured the tar command in your config.inc.php? Are there any relevant messages in the PHP error log?

Regards,
Alec Smecher
Public Knowledge Project Team

Hi @milind4computing,
Could you open the file archive and see the name of the folder it contains? Make sure the folder name is “quickSubmit” before you install it by uploading method.

Hi @satuh1,

The directory name is correct in the archive.

Hi @asmecher,

found the following line in PHP Log:
`
[10-Jan-2020 16:12:27 UTC] PHP Warning: exec() has been disabled for security reasons in /home/ijskit/public_html/lib/pkp/classes/plugins/PluginHelper.inc.php on line 67

    [10-Jan-2020 16:12:27 UTC] PHP Fatal error:  Uncaught Error: Call to a member function getProductType() on string in /home/ijskit/public_html/lib/pkp/classes/plugins/PluginHelper.inc.php:113
    Stack trace:

    #0 /home/ijskit/public_html/lib/pkp/controllers/grid/plugins/PluginGalleryGridHandler.inc.php(283): PluginHelper->installPlugin(NULL, 'The uploaded pl...')
    #1 /home/ijskit/public_html/lib/pkp/classes/core/PKPRouter.inc.php(390): PluginGalleryGridHandler->installPlugin(Array, Object(Request))
    #2 /home/ijskit/public_html/lib/pkp/classes/core/PKPComponentRouter.inc.php(257): PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(Request), Array)
    #3 /home/ijskit/public_html/lib/pkp/classes/core/Dispatcher.inc.php(134): PKPComponentRouter->route(Object(Request))
    #4 /home/ijskit/public_html/lib/pkp/classes/core/PKPApplication.inc.php(252): Dispatcher->dispatch(Object(Request))
    #5 /home/ijskit/public_html/index.php(68): PKPApplication->execute()
    #6 {main}
      thrown in /home/ijskit/public_html/lib/pkp/classes/plugins/PluginHelper.inc.php on line 113`

Seems to be due to exec() function being disabled. I’ll check that meanwhile.

Hi @milind4computing,

Yes, that’s definitely the problem.

Regards,
Alec Smecher
Public Knowledge Project Team

Hi @asmecher,

Yes, exec() being disabled was the problem.
Got it enabled by the hosting provider.

quickSubmit works like a charm now.

Thanks for the help @asmecher @satuh1

2 Likes

The trouble is that OJS does not function properly on most, reasonably priced hosting platforms. Unless you pay a ridiculous amount, the hosting package is ‘shared’, and the provider will have disabled the exec() function as a matter of course, and will almost always point-blank refuse to enable it. As happened in my case, and countless others (Google it). The only way round the problem is to unpack the plugin manually via ftp, and cross one’s fingers.

This issue really ought to be more widely recognised. The error message “The uploaded plugin archive does not contain a folder that corresponds to the plugin name” is text-book.

Hi @thilor,

OJS does not function properly on most, reasonably priced hosting platforms.

That’s a pretty big problem if it’s the case. Do you have any stats to back it up?

Thanks,
Alec Smecher
Public Knowledge Project Team

Standard hosting packages are ‘shared hosting’ and providers disable the exec() function because it a security hazard on such a set-up. VPS and dedicated hosting do not have this drawback, but are expensive.

Those still aren’t stats, and the word ‘expensive’ is relative. It’s understandable that shared hosting providers will disable exec(), since they can’t always control what users place on their servers. It’s perfectly possible to have shared hosting and run exec() in a fashion that makes it usable and safe for everyone, but that requires technical expertise that may not always be available. The plugin gallery is an easy way to install plugins, but it’s not the only way, and you tend to get what you pay for with respect to hosting and service providers.

Regards,
Jason