Failed Ajax invalid JSON request - file upload OJS (only in review phase)

Hi all,

I have a recent installation of OJS on my server and have repeated errors whenever I try to upload a file after the initial submission. So, the first time a submission is created, this causes no issues to upload files, but during the review process, or whenever an author wished to update a file, you get the following error message:


In my error log I see the following message:
[Tue Jun 08 21:01:57.902825 2021] [core:crit] [pid 20962:tid 46957005420288] (13)Permission denied: [client] AH00529: /home/bjpahost/public_html/public/journals/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that ‘/home/bjpahost/public_html/public/journals/’ is executable, referer:

However, I checked the files and directories and they should be readable/executable as needed.

Could anyone help me out?

  • Application Version - OJS
  • PHP 7.4.16

Hi Levi,

It’s complaining about a permission on an .htaccess file. But can you post the permissions on


please? The .htaccess file begins with a period and may not show up/be affected by regular commands.


Thanks for your reply.

I have a .htaccess file in this folder containing this:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

The folder itself has 777 permission

Is that file in your public/journals/ folder? If so, it should not be there. What is the permission on the file itself?

Indeed. I have added this because I thought it was necessary to allow for access. Can I ask what you mean by permission on the file itself?

Hi @Levi_Hoste

There’s no requirement to place an .htaccess file inside the public/journals folder. What you’ve shared so far would be a requirement if you had turned on RESTful urls in your config file, but in that case the .htaccess file would sit in your root OJS folder.

By permissions on the file itself, I mean what you see when you run:

ls -l .htaccess

which will show you the permissions on the file itself. The error you’re logging is:

“unable to check htaccess file, ensure it is readable”

Which suggests that the permissions are wrong.


The permissions of my .htaccess file are now set to 0755. And it is placed only in the root folder (public_html) where my OJS is installed. I have deleted other htaccess files.

What should be written inside the .htaccess?

Are you using RESTful urls? If not you do not need any .htaccess files at all.


No, I am not indeed. I added an .htaccess because I thought that was the issue. Also before adding one, it gave me the error that the .htaccess file was inaccessible…

@jnugent Could you please take a second look at this? Or anyone who possibly have some insights in this?

Many thanks!

Hi @Levi_Hoste

To be honest, if there’s no .htaccess file at all in the web tree, I’m not sure why you’re seeing that error. In addition to that error, are there any actual PHP “Fatal Errors” in your server log?


Dear @jnugent, thanks for your swift response!

I have found the error message below (listed in my Google DevTools).
I hope it helps, since I do not find a specific error in my server log.

GET$$$call$$$/wizard/file-upload/file-upload-wizard/start-wizard?fileStage=6&reviewRoundId=&submissionId=57&stageId=4&uploaderRoles=17-16-4097&_=1624369955740 500 (Internal Server Error)
send @ jquery.min.js?v=
ajax @ jquery.min.js?v=
a.fn.pkpAjaxHtml @ pkp.min.js?v=
a.pkp.controllers.modal.AjaxModalHandler.modalOpen @ pkp.min.js?v=
a.pkp.controllers.modal.ModalHandler @ pkp.min.js?v=
a.pkp.classes.ObjectProxy.parent @ pkp.min.js?v=
a.pkp.controllers.modal.AjaxModalHandler @ pkp.min.js?v=
a.pkp.classes.ObjectProxy.parent @ pkp.min.js?v=
a.pkp.controllers.modal.WizardModalHandler @ pkp.min.js?v=
a.pkp.classes.ObjectProxy.parent @ pkp.min.js?v=
b @ pkp.min.js?v=
a.pkp.classes.Helper.objectFactory @ pkp.min.js?v=
(anonymous) @ pkp.min.js?v=
each @ jquery.min.js?v=
each @ jquery.min.js?v=
a.fn.pkpHandler @ pkp.min.js?v=
a.pkp.classes.linkAction.ModalRequest.activate @ pkp.min.js?v=
a.pkp.controllers.linkAction.LinkActionHandler.activateAction @ pkp.min.js?v=
a.pkp.classes.Handler.handleEvent @ pkp.min.js?v=
dispatch @ jquery.min.js?v=
v.handle @ jquery.min.js?v=