OJS Installation on IONOS Hosting - Solutions

Hey there,

I wish to share my experience about OJS installation on the IONOS (1and1) shared hosting specifically. You can find the whole installation process in 8 steps with some descriptions below. I hope it helps somebody.

Best regards.

Step - Description (problem and solution)
0. Uploading the installation files and arranging file permissions.

1a. Starting the installation.
1b. PROBLEM 1: Empty page, nothing to see about the install process.
1c. SOLUTION 1: ‘disable_path_info = On’ in config.inc.php.

2a. Starting the installation (again).
2b. PROBLEM 2: ‘file uploads = No’ in installation page.
2c. SOLUTION 2: Creating php.ini with;

    file_uploads = 1;
    upload_max_filesize = 10M;

3a. Starting the installation (again).
3b. Installation is done.

4a. Creating the journal.
4b. PROBLEM 3: ‘The requested URL was not recognized.’ for the journal ‘Path’
4c. Inserting below instructions (php.ini) for error logging;

    error_reporting = E_ALL | E_NOTICE | E_DEPRECATED | E_STRICT;
    log_errors = On;
    display_errors = Off;
    error_log = /aaa/bbb/ccc/ddd/htdocs/anotherjournal-com/php-errors.log;

5a. Checking php log to find a clue, noticing an error: PHP Strict Error (PROBLEM 4)
5b. SOLUTION 4: Inserting below instructions (php.ini) to prevent PHP Strict Error;

    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    date.timezone = Europe/Istanbul

6a. SOLUTION 3: Inserting below instructions (.htaccess) to prevent the PROBLEM 3;

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

6b. SOLUTION 3 (cont.): Changing ‘restful_urls = On’ in config.inc.php to let .htaccess can be read by the system.
6c. Journal successfully created.

7a. PROBLEM 5: When open backend for the journal (https://anotherjournal.com/?journal=another&page=submissions) it says: ‘Error: An unexpected error has occurred. Please reload the page and try again.’
7b. While inspecting, it shows HTTP error 500. Seems it is coming from journal’s API path.
7c. In the admin panel (backend), HTTP error 500 for menu items of;


7d. php-errors.log says, in brief:

    'PHP Fatal error:  Uncaught Error: Call to a member function getApp() on int in /aaa/bbb/ccc/ddd/htdocs/eee-com/lib/pkp/classes/core/APIRouter.inc.php:115'

7e. SOLUTION 5: Inserting below instructions (.htaccess) to prevent the error;

    RewriteBase /
    ## https://forum.pkp.sfu.ca/t/solved-upgrade-from-ojs-3-1-2-4-to-ojs-3-2-1-2-problems-with-url-api-in-back-office/65032/13
    ## Rules for ANOTHER
    RewriteCond %{SERVER_NAME} ^(www\.)?anotherjournal.com
    RewriteRule ^api/v1(.*)$ index.php/another/api/v1$1 [L,R=307]
    RewriteCond %{SERVER_NAME} ^(www\.)?anotherjournal.com
    RewriteCond %{REQUEST_URI} !/another/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/another/$1 [L]
  1. All problems are solved, system is working properly, no error in the log.