[OJS-3.5.0-1] PHP warnings and fatal error in the logs

Describe the issue or problem
I’ve set up a test instance of OJS-3.5.0-1 inside a Docker container, and am seeing lots of warnings about files that can’t be found. Additionally, standing user invites I’d issued just some days ago seem to have disappeared. I don’t know if both are related (I find some traces of scheduled tasks in those logged warnings).

Steps I took leading up to the issue
For example:

  1. Start an OJS-3.5.0-1 instance
  2. Inspect the logs

I’m finding tons of warnings, but also one fatal error. I have no idea yet what had triggered it, but this seems a relevant bit of the logs:

[Fri Jul 11 00:07:59.691810 2025] [php:warn] [pid 30:tid 30] [client 172.26.0.4:46214] PHP Warning:
 file_put_contents(/var/www/html/cache/opcache/0c/ff/0cff344d4f9172d493b5ab6cf0d25fd1abc0dd68):
 Failed to open stream: No such file or directory in
 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php on line 204,
 referer: https://test.journal.org/index.php/test/management/settings/access
[Fri Jul 11 00:07:59.762046 2025] [php:warn] [pid 30:tid 30] [client 172.26.0.4:46214] PHP Warning:
  fopen(/var/www/html/cache/opcache/f1/d0/f1d023de2d739c7f72fdd63066213d9814d752d6):
  Failed to open stream: No such file or directory in
  /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php on line 69,
  referer: https://test.journal.org/index.php/test/management/settings/access
[Fri Jul 11 00:07:59.762312 2025] [php:error] [pid 30:tid 30] [client 172.26.0.4:46214] PHP Fatal error:
  Uncaught TypeError: flock(): Argument #1 ($stream) must be of type resource, false given in
  /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php:153
Stack trace:
#0 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php(153): flock()
#1 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php(111): Illuminate\\Filesystem\\LockableFile->getExclusiveLock()
#2 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Cache/FileLock.php(14): Illuminate\\Cache\\FileStore->add()
#3 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Cache/Lock.php(91): Illuminate\\Cache\\FileLock->acquire()
#4 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php(66): Illuminate\\Cache\\Lock->get()
#5 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ManagesAttributes.php(152): Illuminate\\Console\\Scheduling\\CacheEventMutex->exists()
#6 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Console\\Scheduling\\Event->{closure:Illuminate\\Console\\Scheduling\\ManagesAttributes::withoutOverlapping():151}()
#7 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::{closure:Illuminate\\Container\\BoundMethod::call():35}()
#8 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(83): Illuminate\\Container\\Util::unwrapIfClosure()
#9 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#10 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\\Container\\BoundMethod::call()
#11 /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php(334): Illuminate\\Container\\Container->call()
#12 /var/www/html/lib/pkp/classes/scheduledTask/ScheduleTaskRunner.php(65): Illuminate\\Console\\Scheduling\\Event->filtersPass()
#13 /var/www/html/lib/pkp/classes/scheduledTask/PKPScheduler.php(152): PKP\\scheduledTask\\ScheduleTaskRunner->run()
#14 /var/www/html/lib/pkp/classes/core/ScheduleServiceProvider.php(88): PKP\\scheduledTask\\PKPScheduler->runWebBasedScheduleTaskRunner()
#15 [internal function]: PKP\\core\\ScheduleServiceProvider->{closure:PKP\\core\\ScheduleServiceProvider::boot():61}()
#16 {main}
  thrown in /var/www/html/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php on line 153, referer: https://test.journal.org/index.php/test/management/settings/access

What application are you using?
OJS 3.5.0-1. Upgraded from 3.4.0 without any problems.

Additional information
I don’t know if this is related, but user invites I had issued a couple of days have disappeared: no longer listed under “Invites”, nor have the users been created.

Ah, the vanishing invitations were a red herring. I’ve found them in the mysql database, with an expiry date that appears to have passed already:

+-----------+---------------------+
| status    | expiry_date         |
+-----------+---------------------+
| PENDING   | 2025-07-13 10:54:14 |
+-----------+---------------------+

This explains what I’m seeing, and I’ve found how to configure that period in config.inc.php:
https://github.com/pkp/ojs/blob/main/config.TEMPLATE.inc.php#L617

[invitations]
; The number of days a user has to accept an invitation before it expires.
expiration_days = 3

Apologies for the noise (it might help, though, if the expiry date and/or status could be displayed in the invitations overview on the webapp), but my other question remains: what to do about those warnings and error?

Best,

Ron