Problem with document upload in Review and Revision steps of OJS article submission

Hi everybody,

As a new user of OJS (version, I have run onto a problem with document upload in the review and revision steps of an OJS article submission. I am hoping some of you know how to solve this problem.

At the moment, I am getting OJS up and running for our student magazine. I have created different accounts for myself (author, reviewer, journal manager and editor), so I can test the whole process of submitting, reviewing, revising and accepting an article.

The following steps cause no problem:

  • The author submits an article (note that the author is able to upload a document without problems),
  • The journal manager assigns an editor,
  • The editor assigns a reviewer,
  • The reviewer accepts the review.

The problem occurs in the steps that follow. The reviewer performs the review in step 3 of the review process (step 3 is called Download & Review). In this step, there is an option (clickable button) for the reviewer to upload a document. The reviewer can upload the document in a pop-up window that appear after clicking on the button, either by drag-and-drop or selecting the document from the finder window. Both options do not work:

  • With the drag-and-drop, the document can be dragged to the prescribed area and a green icon with plus sign appears next to the document. After dropping the document, it does not appear in the list.
  • With the select option (clickable button), the finder window appear after clicking the button. The document can be selected in the finder window and there is an option to upload. The finder window disappears automatically when clicking the upload button. After these steps, the document does not appear in the list.

Note that the review process can be completed without uploading a document. I did this to test the further process. The same upload problem occurs when the author is asked to submit a revision to the article. The author has the option to upload a revised document and the exact problem as described above occurs here.

I hope this description is clear. Does anybody know how I can fix this issue? Let me know if you need additional information (like screenshots).


Kind regards,

Hi @Barbara,

Thank you for your post. Some screenshots of where this is occurring would be helpful to help identify the issue a bit further. Also, in the case of the document not appearing - are there any error messages, or is it the case that the document is just simply not appearing?

PKP Team

Hi @rcgillis,

Thanks for your response. There are no error messages, the document just does not appear. I have included some screenshots below, hope this clarifies it.

Screenshot 1:
This is the window in which the reviewer can submit the review. I have encircled the ‘Upload File’ button in red.

Screenshot Upload Article Review

Screenshot 2:
After clicking this button, a pop-up window appears. In this window, you can either drag and drop the file or again click the ‘Upload File’ button to open the finder window.

Screenshot Upload Article Review Pop-up

Screenshot 3:
In this last screenshot, you can see that I dragged a file to the window. Initially, a green dot with a plus sign appears, but this does not show up on the screenshot. When I release the file nothing happens (no error message). The screen is the same as in the second screenshot.

Screenshot Failed Upload Article Review

In case I use the ‘Upload File’ button to open the finder window, the finder window opens correctly and I am able to select the document. When I click ‘Upload’ in the finder window, the finder window disappears and the screen is again the same as the second screenshot (no error message).

Do you know what could cause this issue and how I can solve it?

Kind regards,

Hi @Barbara

Thank you for providing these screenshots. I’ve walked through the steps you’ve illustrated and was not able to replicate the error - I was able to upload the file just fine. What about in other areas of OJS - are you able to upload documents elsewhere? For example, the Publisher Library (Workflow - Publisher Library). If that is the case, and you’re not able to upload in other areas, then that might point to a configuration/permissions issue. But, if it is just within this review area, I’m not quite sure what that might be. Another thought might be if this is a browser issue, and if trying within different browsers might make a difference - although that’s a bit of a stretch, I think.

PKP Team

Dear @rcgillis,

Thanks for the reply. I tried different browsers before and this did not make a difference. The issue is the same on different browsers.

I just tried out the Publisher Library and the exact same issue occurs. You say that this indicates it is a configuration/permissions issue. Do you have any suggestions how I can check whether this is indeed the case?

Kind regards,

Hi @Barbara,

This is possibly an issue with the files_dir configured in your configuration file – either it’s incorrect, or the file permissions on its contents aren’t permitting OJS to store files there. There is more information regarding permissions in this thread: Permissions of directories and config file - security issue

And as part of our documentation:

I’m not sure if you are the systems administrator for your OJS instance or not, but it is typically the person who is the systems administrator responsible for installation, upgrading, etc. and who would have knowledge of server configuration, who would carry out these changes.

Best regards,

PKP Team

Hi. I am working on the problem that Barbara mentioned.
As you can see the files directory is ouside the website (the correct path is in the /srv/www/files with the correct rights

; Complete path to directory to store uploaded files
; (This directory should not be directly web-accessible)
; Windows users should use forward slashes
files_dir = /srv/www/files


So we don’t know how we can solve the problem.

Kind regards,

Hub lempers

Hi, additoinal information for that problem. I am the system engineer who is working on the problem. Whe also thought that it was a right issue or something in that direction
it resides on a Suse linux enterprise server15.2 with php version7.4.6 and apache 2.4.42 with the databse on a centrale mysql server.
wwwrun is the apache user and www is the group. Students can upload documents.
This is the directory sturcture of the directory “files”


Kind regards,

Hub Lempers

Hi @lempie,

Thank you for providing this additional information. I’m not sure what to suggest at this point, but I’ll see if some of my other team members are able to advise.

PKP Team

Hi @Barbara and @lempie,

just to double-check:

  • Apache has full access to the files dir and files recursively, right? I only see the directory itself from the screenshot.
  • Is PHP log empty when reproducing the error and php.ini configured to log errors?
  • Is there something in the browser’s console that may indicate the problem? I’d also check different browsers and disable browser’s extensions.

Hi @Vitaliy

  1. Here are some more screen dumps:. The first one is the files directory

The second screen dump is the OJS directory:

  1. I will clear the logfiles and then we will create the problem so we can see what’s written in de logfiles: error_log and ojs_error_log. Beneath is the erro handling section of the php.ini

; Error handling and logging ;

; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn’t be wasting
; resources complaining about best practices and coding standards. That’s what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
; Error Level Constants:
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it’s possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it is automatically initialized to an
; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP’s initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP’s
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
; E_DEPRECATED - warn about code that will not work in future versions
; of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
; Common Values:
; E_ALL (Show all errors, warnings and notices including coding standards.)
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; For production environments, we recommend logging errors rather than
; sending them to STDOUT.
; Possible Values:
; Off = Do not display any errors
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
; On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
display_errors = Off

; The display of errors which occur during PHP’s startup sequence are handled
; separately from display_errors. PHP’s default behavior is to suppress those
; errors from clients. Turning the display of startup errors on can be useful in
; debugging configuration problems. We strongly recommend you
; set this to ‘off’ for production servers.
; Default Value: Off
; Development Value: On
; Production Value: Off
display_startup_errors = Off

; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
log_errors = On

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
log_errors_max_len = 1024

; Do not log repeated messages. Repeated errors must occur in same file on same
; line unless ignore_repeated_source is set true.
ignore_repeated_errors = Off

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; source lines.
ignore_repeated_source = Off

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This is only effective in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
report_memleaks = On

; This setting is on by default.
;report_zend_debug = 0

; Store the last error/warning message in $php_errormsg (boolean). Setting this value
; to On can assist in debugging and is appropriate for development servers. It should
; however be disabled on production servers.
; This directive is DEPRECATED.
; Default Value: Off
; Development Value: Off
; Production Value: Off
;track_errors = Off

; Turn off normal error reporting and emit XML-RPC error XML
;xmlrpc_errors = 0

; An XML-RPC faultCode
;xmlrpc_error_number = 0

; When PHP displays or logs an error, it has the capability of formatting the
; error message as HTML for easier reading. This directive controls whether
; the error message is formatted as HTML or not.
; Note: This directive is hardcoded to Off for the CLI SAPI
;html_errors = On

; If html_errors is set to On and docref_root is not empty, then PHP
; produces clickable error messages that direct to a page describing the error
; or function causing the error in detail.
; You can download a copy of the PHP manual from
; and change docref_root to the base URL of your local copy including the
; leading ‘/’. You must also specify the file extension being used including
; the dot. PHP’s default behavior is to leave these settings empty, in which
; case no links to documentation are generated.
; Note: Never use this feature for production boxes.
; Examples
;docref_root = “/phpmanual/”

;docref_ext = .html

; String to output before an error message. PHP’s default behavior is to leave
; this setting blank.
; Example:
;error_prepend_string = “

; String to output after an error message. PHP’s default behavior is to leave
; this setting blank.
; Example:
;error_append_string = “”

; Log errors to specified file. PHP’s default behavior is to leave this value
; empty.
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

; The syslog ident is a string which is prepended to every message logged
; to syslog. Only used when error_log is set to syslog.
;syslog.ident = php

; The syslog facility is used to specify what type of program is logging
; the message. Only used when error_log is set to syslog.
;syslog.facility = user

; Set this to disable filtering control characters (the default).
; Some loggers only accept NVT-ASCII, others accept anything that’s not
; control characters. If your logger accepts everything, then no filtering
; is needed at all.
; Allowed values are:
; ascii (all printable ASCII characters and NL)
; no-ctrl (all characters except control characters)
; all (all characters)
; raw (like “all”, but messages are not split at newlines)
;syslog.filter = ascii

; Default value: 0
; Development value: 0
; Production value: 0

  1. We tried with several browsers like Chrome, Safari, Brave, Edge, Firefox, Opera but still the same outcome. We also tried on Mac and Windows devises with the same result.

  2. The php.ini is pretty much default. We didn’t change much. Only the necessary parameters as file_upload and file_size

Kind regards,

Hub Lempers

Good Morning everybody.

This mornig i have cleared all the logfiles, restarted apache en then login in OJS as editor. Dit a sumission en then log in as reviewer As i tried to upload a file or drop & drag a file nothing happens.
In the error_log i don’t see new entries… In the access_log i don’t see anything specific. In the ojs_access_log also. In the ojs_error_log i see messages around the time i did my actions:


But i also see that those messages appear before i did my action. Could those messages probably point to the problem we have?

Kind regards,

Hub lempers

That notice refers to the absent homepage image.

Anyway, that’s very strange that file upload fails silently, without any errors. What about browser’s console? Do you see any errors there? Besides errors, you also can take a look at the request through the browser’s developer tools, e.g.: Open Chrome DevTools - Chrome Developers. In particular, network tab: Network features reference - Chrome Developers. Look at requests that are firing when uploading a file as a reviewer. Normally, the status code of the responses should be 200; you can inspect, which is failing and what the headers are. I’ve attached an example. It probably won’t show the cause but may give a general sense of what is going on there.

Hi everybody,

I think i have solved the problem. I was chcking every line in the php.ini and found a corruption in the file in the upload section. I have corrected that and when i test again i could upload the file ans also could see them. Barbara has to test agin to be sure but it looks good so far. I like to thank everbody for helping me and Barbara with our problem. Its good to have a community where you can get help with problems, but i still wondering why i didn’s see any error messages form php in the error_log file.

Kind Regards,

Hub Lempers

1 Like

This topic was automatically closed after 42 hours. New replies are no longer allowed.