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.
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 @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.
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.
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.
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.