Thank Jeffrey, that's a good eye, but unfortunately, the problem persists.
Indeed, update.php had not completed *successfully*. There appears to be a mistake in the documentation (or a shorthand in which it is assumed the admin understands the syntax is not literal). The INSTALL page says to run:
> composer require "phpoffice/phpexcel:~1.8"
I had ran this command verbatim. Initially, composer would not complete due to another unrelated module which specified unit-tests in its require/manifest, but the module was not deployed with its test directory. Having fixed that problem in multiple places, the composer command ran successfully. Unfortunately the tilde seems to have been the cause of the failure for running update:
phpoffice/phpexcel: 1.8.2 installed, ~1.8 required.
Error: your composer.lock file is not up to date. Run "composer update --no-dev" to install newer dependencies
This is really quite strange. I looked at the composer documentation, and there is definitely some confusion there. In one section, it says that the version attribute must match a regular expression, which does not include the ~. Another section (
https://getcomposer.org/doc/articles/versions.md) indicates this is perfectly acceptable, and that "~1.8" should mean ">=1.8.0". However, none of the following combinations in composer.json worked:
- "1.8*"
- "1.8.*"
- "1.8.0"
- ">=1.8.0"
In the end, I had to change composer.json with the exact version number composer had previously installed. Then I could run update. I also updated the language cache.