Erro ao tentar atualizar versão 3.4.0-9 para 3.5.0-1

Recebo a seguinte mensagem de erro ao tentar atualizar para a versão 3.5.0-1:

Warning : mkdir(): Permission denied in /home/infointe/teste/ojs-novo/lib/pkp/classes/file/FileManager.php on line 424

Fatal error : Uncaught ValueError: Path cannot be empty in /home/infointe/teste/ojs-novo/lib/pkp/classes/scheduledTask/ScheduledTask.php:122 Stack trace: #0 /home/infointe/teste/ojs-novo/lib/pkp/classes/scheduledTask/ScheduledTask.php(122): fopen() #1 /home/infointe/teste/ojs-novo/lib/pkp/classes/scheduledTask/ScheduledTask.php(148): PKP\scheduledTask\ScheduledTask->addExecutionLogEntry() #2 /home/infointe/teste/ojs-novo/lib/pkp/classes/migration/upgrade/v3_5_0/I7135_CreateNewRorRegistryCacheTables.php(60): PKP\scheduledTask\ScheduledTask->execute() #3 /home/infointe/teste/ojs-novo/lib/pkp/classes/install/Installer.php(445): PKP\migration\upgrade\v3_5_0\I7135_CreateNewRorRegistryCacheTables->up() #4 /home/infointe/teste/ojs-novo/lib/pkp/classes/install/Installer.php(298): PKP\install\Installer->executeAction() #5 /home/infointe/teste/ojs-novo/lib/pkp/classes/install/Installer.php(207): PKP\install\Installer->executeInstaller() #6 /home/infointe/teste/ojs-novo/lib/pkp/classes/install/form/UpgradeForm.php(49): PKP\install\Installer->execute() #7 /home/infointe/teste/ojs-novo/lib/pkp/pages/install/InstallHandler.php(148): PKP\install\form\UpgradeForm->execute() #8 [internal function]: PKP\pages\install\InstallHandler->installUpgrade() #9 /home/infointe/teste/ojs-novo/lib/pkp/classes/core/PKPRouter.php(327): call_user_func() #10 /home/infointe/teste/ojs-novo/lib/pkp/classes/core/PKPPageRouter.php(249): PKP\core\PKPRouter->_authorizeInitializeAndCallRequest() #11 /home/infointe/teste/ojs-novo/lib/pkp/classes/core/Dispatcher.php(157): PKP\core\PKPPageRouter->route() #12 /home/infointe/teste/ojs-novo/lib/pkp/classes/core/PKPApplication.php(426): PKP\core\Dispatcher->dispatch() #13 /home/infointe/teste/ojs-novo/index.php(21): PKP\core\PKPApplication->execute() #14 {main} thrown in /home/infointe/teste/ojs-novo/lib/pkp/classes/scheduledTask/ScheduledTask.php on line 122

Olá, @diegojesus86!

Pelos erros:

  • Warning: mkdir(): Permission denied … FileManager.php:424
  • Fatal error: Path cannot be empty … ScheduledTask.php:122

temos dois sintomas clássicos de permissão + caminho de arquivos não configurado.

Checklist rápido

  1. Confirme o files_dir no config.inc.php
  • Use caminho absoluto e fora do webroot (ex.: /var/ojs-files).
    Ex.:

    [files]
    files_dir = /var/ojs-files
    

(Boas práticas da própria PKP recomendam isso.

  1. Crie a pasta de logs de tarefas agendadas
    O OJS grava logs das tarefas em ${files_dir}/scheduledTaskLogs.
  • Crie e dê permissão:

    sudo mkdir -p /var/ojs-files/scheduledTaskLogs
    sudo chown -R www-data:www-data /var/ojs-files
    

    (troque www-data pelo usuário do seu Apache/Php-FPM, p.ex. apache em CentOS).
    A PKP mesma indica que os logs de tarefas ficam em scheduledTaskLogs dentro do files_dir.

  1. Garanta escrita em cache/ e public/ da instalação
    O instalador/upgrade precisa recriar caches:
sudo chown -R www-data:www-data /home/infointe/teste/ojs-novo/cache /home/infointe/teste/ojs-novo/public

SELinux habilitado? aplique o contexto:

sudo chcon -R -t httpd_sys_rw_content_t \
  /var/ojs-files /home/infointe/teste/ojs-novo/cache /home/infointe/teste/ojs-novo/public
  1. Limpe o cache e rode o upgrade pela linha de comando (mostra erro completo):
cd /home/infointe/teste/ojs-novo
rm -rf cache/*
php tools/upgrade.php upgrade

Por que esses passos?

  • O mkdir(): Permission denied indica que o PHP não pode criar diretórios (geralmente em cache/ ou dentro do files_dir).
  • O Path cannot be empty aparece quando o OJS tenta abrir o arquivo de log da tarefa agendada e o caminho está vazio — isso costuma acontecer quando o files_dir está em branco ou aponta para um lugar inexistente/inacessível, já que os logs vão em ${files_dir}/scheduledTaskLogs.

Se ainda falhar, manda estes retornos

  • O trecho do seu config.inc.php com [files] (pode ofuscar parte do caminho).

  • Saída de:

    ls -ld /var/ojs-files /var/ojs-files/scheduledTaskLogs \
           /home/infointe/teste/ojs-novo/cache \
           /home/infointe/teste/ojs-novo/public
    
  • E (se houver SELinux):

    getenforce
    
2 curtidas