Actualizar php8.0 a 8.1 no lo registra nextcloud 27

Hola !

Acabo de actualizar nextcloud y no registra la existencia de php8.1 y continúa utilizando php8.0 ( o eso es lo que dice el mensaje del aviso de seguridad ) :

PHP 8.0 es obsoleto en Nextcloud 27. Nextcloud 28 podría requerir al menos PHP 8.1. Por favor, actualice a una de las versiones oficialmente soportadas de PHP provistas por PHP Group ↗ tan pronto sea posible.

Nextcloud version : 27.1.6
Operating system and version : GNU/Linux Debian 10
Apache version : 2.4.38
PHP version : 8.1 ( aún está instalada también la versión 8.0 )

The issue you are facing:

Al habilitar la versión 8.1 de php aparece el siguiente mensaje al ingresar :

Internal Server Error
The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.

Is this the first time you’ve seen this error? : Yes

Steps to replicate it:

Ejecuto los siguientes comandos para utilizar php8.1

  1. root@nextcloud:~# a2dismod php8.0
  2. root@nextcloud:~# a2enmod php8.1
  3. root@nextcloud:~# systemctl restart apache2

Para resolverlo, deshabilito php8.1 y habilito php8.0

El contenido del archivo ‘config.php’ :

$CONFIG = array (
  'maintenance' => false,
  'instanceid' => '************',
  'passwordsalt' => '***********',
  'secret' => '**********',
  'trusted_domains' => 
  array (
    1 => '**************',
  ),
  'datadirectory' => '****************',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'dbtype' => 'mysql',
  'version' => '27.1.6.2',
  'overwrite.cli.url' => '**************',
  'dbname' => '************',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => '****',
  'mysql.utf8mb4' => true,
  'dbuser' => '*************',
  'dbpassword' => '***********',
  'installed' => true,
  'default_phone_region' => 'AR',
  'htaccess.RewriteBase' => '/',
  'mail_smtpmode' => 'smtp',
  'mail_smtpsecure' => 'tls',
  'mail_sendmailmode' => 'smtp',
  'mail_from_address' => '***********',
  'mail_domain' => '***********',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtphost' => '**********',
  'mail_smtpport' => '587',
  'mail_smtpname' => '************',
  'mail_smtppassword' => '*********',
  'loglevel' => 2,
  'theme' => '',
  'trashbin_retention_obligation' => 'auto, 180',
);

Contenido del archivo /var/log/apache2/error.log:

[Sun Feb 11 13:53:42.709722 2024] [access_compat:error] [pid 752] [client 198.41.230.74:32344] AH01797: client denied by server configuration: /var/www/html/data/.ocdata
[Sun Feb 11 14:08:12.005595 2024] [mpm_prefork:notice] [pid 455] AH00169: caught SIGTERM, shutting down
[Sun Feb 11 14:08:12.454762 2024] [mpm_prefork:notice] [pid 844] AH00163: Apache/2.4.38 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Sun Feb 11 14:08:12.454808 2024] [core:notice] [pid 844] AH00094: Command line: '/usr/sbin/apache2'
[Sun Feb 11 14:09:04.232741 2024] [mpm_prefork:notice] [pid 844] AH00169: caught SIGTERM, shutting down
[Sun Feb 11 14:09:05.647107 2024] [mpm_prefork:notice] [pid 893] AH00163: Apache/2.4.38 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Sun Feb 11 14:09:05.647158 2024] [core:notice] [pid 893] AH00094: Command line: '/usr/sbin/apache2'
[Sun Feb 11 14:10:48.881999 2024] [mpm_prefork:notice] [pid 893] AH00169: caught SIGTERM, shutting down
[Sun Feb 11 14:11:19.277541 2024] [mpm_prefork:notice] [pid 493] AH00163: Apache/2.4.38 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Sun Feb 11 14:11:19.312138 2024] [core:notice] [pid 493] AH00094: Command line: '/usr/sbin/apache2'
[Sun Feb 11 14:15:03.525476 2024] [access_compat:error] [pid 636] [client 198.41.230.124:51962] AH01797: client denied by server configuration: /var/www/html/data/.ocdata
[Sun Feb 11 14:38:05.824788 2024] [mpm_prefork:notice] [pid 493] AH00169: caught SIGTERM, shutting down
[Sun Feb 11 14:38:05.947563 2024] [mpm_prefork:notice] [pid 722] AH00163: Apache/2.4.38 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Sun Feb 11 14:38:05.947604 2024] [core:notice] [pid 722] AH00094: Command line: '/usr/sbin/apache2'
[Sun Feb 11 14:40:00.324214 2024] [mpm_prefork:notice] [pid 722] AH00169: caught SIGTERM, shutting down
[Sun Feb 11 14:40:00.398576 2024] [mpm_prefork:notice] [pid 873] AH00163: Apache/2.4.38 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Sun Feb 11 14:40:00.398622 2024] [core:notice] [pid 873] AH00094: Command line: '/usr/sbin/apache2'
[Sun Feb 11 14:43:54.587681 2024] [access_compat:error] [pid 887] [client 198.41.233.5:10744] AH01797: client denied by server configuration: /var/www/html/data/.ocdata

No hay registros de error en ‘nextcloud.log’ relacionados ( por ejemplo si dice que no puede actualizar el plugin ransomware ).

Cualquier información acerca de como lograr habilitar php8.1 será muy bienvenida !

Toda otra información que fuera relevante y no haya incluído, por favor avisar y lo envío.

Muchas gracias al que se tome la molestia de leerlo y contestar.

Hola @Ruben-cipo ,

Did the message appear on the console?
There are not only several PHP versions (8.0, 8.1 etc) but also several PHP SAPI (=Server API). The most important ones for you are php-cli, which is called from the command line, and libapache2-mod-php, the Apache module through which your web server communicates with php.
You can solve your problem on the console in two ways:

  • by calling the correct php directly, i.e. php8.1 instead of php
  • by updating the update alternatives. To do this, call this and set each individual php related alternative to manually 8.1:

¿Apareció el mensaje en la consola?
No sólo existen varias versiones de PHP (8.0, 8.1, etc.) sino también varias PHP SAPI (=API del servidor). Los más importantes para usted son php-cli, que se llama desde la línea de comando, y libapache2-mod-php, el módulo Apache a través del cual su servidor web se comunica con php.
Puedes solucionar tu problema en la consola de dos maneras:

  • llamando directamente al php correcto, es decir, en lugar de php, php8.1
  • actualizando el mecanismo de ‘update-alternatives’. Para hacer esto, llame a esto y configure cada alternativa individual relacionada con php en manualmente 8.1:
for linkgroup in `ls /var/lib/dpkg/alternatives/ | grep -E "ph(ar|p)"`; do sudo update-alternatives --config $linkgroup; done

That is very old. You should update your operating system.
Eso es muy viejo. Deberías actualizar tu sistema operativo.

What ist the output of this call:
¿Cuál es el resultado de esta llamada?

apt list '*php*' --installed 2>/dev/null | sed '1d' | awk -F'[/ ]' '{printf "%-23s%-46s%s\n", $1, $3, $NF}'

buena suerte,
ernolf

Hola @ernolf ,

Con respecto al mensaje, no aparece por consola, sino en el aviso de seguridad de la Configuraciones de Administración ( Administration Settings ) → Avisos de seguridad y configuración ( Security & setup warnings ) del front-end.

La salida de la configuración manual de cada ‘alternatives’ daba éste resultado :

root@nextcloud:~# for linkgroup in `ls /var/lib/dpkg/alternatives/ | grep -E "ph(ar|p)"`; do sudo update-alternatives --config $linkgroup; done
Existen 3 opciones para la alternativa phar (que provee /usr/bin/phar).

  Selección   Ruta              Prioridad  Estado
------------------------------------------------------------
* 0            /usr/bin/phar8.1   81        modo automático
  1            /usr/bin/phar7.4   74        modo manual
  2            /usr/bin/phar8.0   80        modo manual
  3            /usr/bin/phar8.1   81        modo manual

Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección: 
Existen 3 opciones para la alternativa phar.phar (que provee /usr/bin/phar.phar).

  Selección   Ruta                   Prioridad  Estado
------------------------------------------------------------
* 0            /usr/bin/phar.phar8.1   81        modo automático
  1            /usr/bin/phar.phar7.4   74        modo manual
  2            /usr/bin/phar.phar8.0   80        modo manual
  3            /usr/bin/phar.phar8.1   81        modo manual

Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección: 
Existen 3 opciones para la alternativa php (que provee /usr/bin/php).

  Selección   Ruta             Prioridad  Estado
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        modo automático
  1            /usr/bin/php7.4   74        modo manual
  2            /usr/bin/php8.0   80        modo manual
  3            /usr/bin/php8.1   81        modo manual

Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección:

Es decir que está seleccionado 8.1 en todos los casos.

Y con respecto al sistema operativo, entiendo la inquietud, pero por otras experiencias aún lo encuentro más estable que el 12. Aunque el paso siguiente de la actualización de Nextcloud era el de Debian justamente.

En el intermedio, desinstalé un paquete que sugería apt como ya no necesario “php-common” y esto desinstaló php8.0
Entonces reinstalé php8.1 con todos los módulos necesarios y luego de reiniciar, al intentar ingresar sólo mostró el index.php en texto plano

Estoy restaurando un backup para tener un inicio más limpio. Luego continuaré.

He visto que te has tomado el trabajo de traducir las respuestas, en realidad tengo algún inconveniente para escribir en inglés, y no estoy seguro de equivocarme y que no me entiendan, pero tengo más facilidad para la lectura.

Ejecutando las tareas de cron directamente desde la consola obtengo este mensaje :

root@nextcloud:~# php -f /var/www/html/cron.php
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/html/lib/private/DB/Connection.php:140

El archivo php.ini fue modificado de la misma manera que lo había sido para php8.0, agregando " apc.enable_cli=1 ".

Nextcloud funciona, pero las tareas de cron no se ejecutan

Hola,
¿Has instalado todos los modulos necesario en PHP8.1?
(php -m)

Referencia: PHP Modules & Configuration — Nextcloud latest Administration Manual latest documentation

Hola @BlueBee

Entiendo que están todos.

Debian 12 ( Bookworm ) es necesario o recomendado ?

root@nextcloud:~# php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

1 Like

Required:

  • PHP (see System requirements for a list of supported versions)
  • PHP module ctype
  • PHP module curl
  • PHP module dom
  • PHP module fileinfo (included with PHP)
  • PHP module filter (only on Mageia and FreeBSD)
  • PHP module GD
  • PHP module hash (only on FreeBSD)
  • PHP module JSON (included with PHP >= 8.0)
  • PHP module libxml (Linux package libxml2 must be >=2.7.0)
  • PHP module mbstring
  • PHP module openssl (included with PHP >= 8.0)
  • PHP module posix
  • PHP module session
  • PHP module SimpleXML
  • PHP module XMLReader
  • PHP module XMLWriter
  • PHP module zip
  • PHP module zlib

Database connectors (pick the one for your database):

  • PHP module pdo_sqlite (>= 3, usually not recommended for performance reasons)
  • PHP module pdo_mysql (MySQL/MariaDB)
  • PHP module pdo_pgsql (PostgreSQL)

Bueno, escribo los pasos que seguí para resolverlo.

Como decía empecé con una copia que tenía sin actualizar ni instalar php8.2, y actualicé primero el sistema operativo.
El que estaba era Debian 10 y actualicé a Debian 12.
Probé funcionamiento y reinicié.

Luego de eso actualicé php a 8.2 e instalé todos los módulos para la versión actualizada.

Luego entonces actualicé Nextcloud y todo funciona sin problemas.

Queda por migrar los cambios en la base de datos del servidor que quedó funcionando.

Entiendo entonces que Debian 12 es necesario y no opcional.

Gracias @ernolf y @BlueBee por su ayuda.

Saludos !

This topic was automatically closed 8 days after the last reply. New replies are no longer allowed.