[OJS 3.5] PHP Fatal error on installation process

Hi awesome PKP team, I am installing OJS v3.5.0.0 using the docker official image and I found the following error after clicked the install button.

PHP Fatal error:  Uncaught AssertionError: assert(false) in /var/www/html/lib/pkp/classes/scheduledTask/ScheduledTask.php:67
Stack trace:
#0 /var/www/html/lib/pkp/classes/scheduledTask/ScheduledTask.php(67): assert(false, 'assert(false)')
#1 /var/www/html/lib/pkp/classes/install/Installer.php(957): PKP\\scheduledTask\\ScheduledTask->__construct()
#2 [internal function]: PKP\\install\\Installer->updateRorRegistryDataset(Object(APP\\install\\Install), Array)
#3 /var/www/html/lib/pkp/classes/install/Installer.php(491): call_user_func(Array, Object(APP\\install\\Install), Array)
#4 /var/www/html/lib/pkp/classes/install/Installer.php(298): PKP\\install\\Installer->executeAction(Array)
#5 /var/www/html/lib/pkp/classes/install/Installer.php(207): PKP\\install\\Installer->executeInstaller()
#6 /var/www/html/lib/pkp/classes/install/form/InstallForm.php(198): PKP\\install\\Installer->execute()
#7 /var/www/html/lib/pkp/pages/install/InstallHandler.php(93): PKP\\install\\form\\InstallForm->execute()
#8 [internal function]: PKP\\pages\\install\\InstallHandler->install(Array, Object(APP\\core\\Request))
#9 /var/www/html/lib/pkp/classes/core/PKPRouter.php(327): call_user_func(Array, Array, Object(APP\\core\\Request))
#10 /var/www/html/lib/pkp/classes/core/PKPPageRouter.php(249): PKP\\core\\PKPRouter->_authorizeInitializeAndCallRequest(Array, Object(APP\\core\\Request), Array, false)
#11 /var/www/html/lib/pkp/classes/core/Dispatcher.php(157): PKP\\core\\PKPPageRouter->route(Object(APP\\core\\Request))
#12 /var/www/html/lib/pkp/classes/core/PKPApplication.php(426): PKP\\core\\Dispatcher->dispatch(Object(APP\\core\\Request))
#13 /var/www/html/index.php(21): PKP\\core\\PKPApplication->execute()
#14 {main}
  thrown in /var/www/html/lib/pkp/classes/scheduledTask/ScheduledTask.php on line 67, referer: http://servicioseditoriales.unam.mx:8087/index.php/index/en/install

I need to set up a previous requirement?

Hola Juan,

Tras crear la imagen probé de instalarla y no tuve ningún problema… pero el testing que hice es muy pobre (la 3.5 no es todavía LTS), así que puede ser que se me haya pasado algo.

Algunas preguntas:

  • Estás haciendo una instalación limpia o un upgrade de un site existente?
  • Haces un build de la imagen o usas las de dockerHub?
  • Tienes algún volumen bind (por ejemplo el de plugins) o son volúmenes que gestiona docker?

Por el error que reportas, parece que está instanciando la clase sheduledTasks directamente y por eso salta el asset, pero no acabo de entender como puede ser posible.

Lo único que se me ocurre es que tengas plugins viejos.

Si puedes compartir tu docker-compose o darnos más info sobre el caso, le echo un ojo.

Un saludo,
m.

Hi @juancure,

This looks related to an issue that should already be corrected:

https://github.com/pkp/pkp-lib/issues/11171

I’ll ask the developer who worked on that to have a look.

Regards,
Alec Smecher
Public Knowledge Project Team

Hola que tal @marc estoy utlizando la imagen oficial disponible en dockerhub. Es una instalación limpia la que estoy realizando. También estoy utilizando la estructura de archivos que se encuentra disponibles en GitHub - pkp/docker-ojs: Open Journal Systems (OJS) is a journal management and publishing system.

Y el docker-compose.yml es el siguiente:


networks:
  inside:
    external: false

services:
  db:
    image: mariadb:11.4
    env_file:
      - .env
    container_name: "ojs_db_${COMPOSE_PROJECT_NAME:-demo}"
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD:-ojsPwd}"
      MYSQL_DATABASE: "${OJS_DB_NAME:-ojs}"
      MYSQL_USER: "${OJS_DB_USER:-ojs}"
      MYSQL_PASSWORD: "${OJS_DB_PASSWORD:-ojsPwd}"
    volumes:
      - ./volumes/db:/var/lib/mysql
      - ./volumes/db-import:/docker-entrypoint-initdb.d
      - ./volumes/logs/db:/var/log/mysql
      - ./volumes/config/db.charset.conf:/etc/mysql/conf.d/charset.cnf
    networks:
      - inside
    restart: unless-stopped

  ojs:
    image: "pkpofficial/${OJS_IMAGE:-ojs}:${OJS_VERSION:-latest}"
    env_file:
      - .env
    container_name: "ojs_app_${COMPOSE_PROJECT_NAME:-demo}"
    hostname: "${COMPOSE_PROJECT_NAME:-demo}"
    ports:
      - "${HTTP_PORT:-8081}:80"
      - "${HTTPS_PORT:-443}:443"
    volumes:
      - /etc/localtime:/etc/localtime
      - ./volumes/private:/var/www/files
      - ./volumes/public:/var/www/html/public
      - ./volumes/logs/app:/var/log/apache2
#      # WARNING: You can only enable file-volumes if file exists in the container.
      - ./volumes/config/ojs.config.inc.php:/var/www/html/config.inc.php
#      - ./volumes/config/apache.htaccess:/var/www/html/.htaccess
#      - ./volumes/php.custom.ini:/usr/local/etc/php/conf.d/custom.ini

    networks:
      - inside
    depends_on:
      - db
    restart: unless-stopped

El archivo .env que estoy utilizando tiene lo siguiente:

# Set your journal Tag:
COMPOSE_PROJECT_NAME=journal
PROJECT_DOMAIN=journal.localhost
SERVERNAME=$PROJECT_DOMAIN

OJS_IMAGE=ojs
OJS_VERSION=3_5_0-0

# IMPORTANT: Set a non used port.
HTTP_PORT=8087
HTTPS_PORT=8487

# Remember this to fill your installation form in a clean installatio
# MYSQL_VERSION=10.3
MYSQL_ROOT_PASSWORD="J1RrQN8bHD"

# OJS variables
OJS_CLI_INSTALL=0
OJS_DB_HOST=db
OJS_DB_DRIVER=mysqli
OJS_DB_USER=ojs_user
OJS_DB_PASSWORD="s2msuYf6vU"
OJS_DB_NAME=prueba_ojs3500

Sólo tengo los volumenes definidos en el docker-compose.yml.

Espero sea de utilidad, saludos.

Hi the the line that point in the error log specify the for some reason , when need to generate the schedule take log and store it , it can not store it as unable to get the location or generate the proper folder in that location due to permission issue . it is possible to check what set in the config.inc.php for the files_dir of files settings configuration ? is that path available or writeable in the docker image ?