On Thu, Jun 24, 2021 at 9:40 AM otheus uibk <otheus.uibk(a)gmail.com> wrote:
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.
Don't get me started on the dev tools on a production server...
Here's what I do for composer:
$ sudo apt-get install -y composer
$ sudo su -
# cd /var/www/html/w
# rm -rf /var/www/html/w/vendor
# php -d extension=phar.so composer.phar update --no-dev
# exit
$ sudo apt-get remove -y composer
Then, fix ownership and permissions on the files. We use
root:www-data, 0750 and friends. Root owns everything and gets
read/write. The webserver is the group owner and only gets read. (The
webserver gets read/write on the upload/ and sessions/ directories).
Jeff