Disable APCu on CLI, if it was added to LocalConfiguration.php automatically while installing TYPO3
I needed a few hours until I understood/find that a cacheConfiguration is added to LocalConfiguration (see below) if APCu is detected.
'caching' => [ 'cacheConfigurations' => [ 'extbase_object' => [ 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcuBackend', 'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend', 'groups' => [ 'system', ], 'options' => [ 'defaultLifetime' => 0, ], ], ], ],
The big problem¶
There is no information or additional code added, which automatically disables APCu on CLI. If you are not deep into what APCu is or what TYPO3 do while installing the instance, you can freak out ;-)
After finishing the install wizard, the install tool DB Compare shows you
ALTER TABLE cf_extbase_object RENAME TO zzz_deleted_cf_extbase_object ALTER TABLE cf_extbase_object_tags RENAME TO zzz_deleted_cf_extbase_object_tags
which could also be very confusing.
Possible scenario 1)¶
A TYPO3 integrator should get informed about what is added to LocalConfiguration automatically by the TYPO3 install process and what he has to do if he run CLI tasks/extbase command controllers.
Possible scenario 2)¶
An automatically added cacheConfiguration is automatically added to AdditionalConfiguration.php and wrapped into an if with a condition something like
PHP_SAPI == 'cli' (or whatever is enough to fix CLI)
Possible scenario 3)¶
Such cache backends, which are known to not work in CLI mode must be disabled transparent.
#5 Updated by David Henninger almost 3 years ago
Once the APCu backend is enabled, the scheduler no longer works when called by PHP CLI, as Typo3 tries to use APCu, which is not available with CLI, causing the following error:
The APCu backend cannot be used because apcu is disabled on CLI.
apc.enabled does not enable APCu for CLI and there isn't a documented option to enable it either: https://secure.php.net/manual/en/apcu.configuration.php
However, the old option of its ancestor (apc.enable_cli) still works, however it is not recommend according to the old documentation: https://secure.php.net/manual/en/apc.configuration.php#ini.apc.enable-cli
Typo3 should not rely on APCu with PHP CLI as the parser.