4.1-beta : impossible de télécharger un plugin via SVP

Et donc tu n’aurais pas l’extension php-zip ?

À partir de PHP 7.4.0, afin d’utiliser ces fonctions, vous devez compiler PHP avec le support zip en utilisant l’option de configuration –with-zip.

Cela dit comme on le voyait dans un mini-sondage là Mini sondage sur quelques extensions PHP >= 7.4 (zip, zlib, phar, curl) bah l’unanimité des réponses avait bien cette extension (même toi d’ailleurs)

Je suis assez étonné du copu

Tu peux vérifier leur présence ou absence dans le php_info() ?

Ils sont bien là. cf capture d’écran : kDrive

Et j’ai pu faire la mise à jour avec spip_loader juste avant.

Tu peux juste donner la version de zip et lib-zip ? (ton image est illisible :p)
Ceci dit c’est peut être autre chose mais j’ai beau relire le code, je ne vois pas.

Zip enabled
Zip version 1.20.0
Libzip version 0.11.2

(il y a un lien pour télécharger l’image en haut à droite :slight_smile: )

https://www.php.net/manual/fr/zip.constants.php indique

ZipArchive::RDONLY (int)
Ouvre l’archive en mode lecture seule. Disponible à partir de PHP 7.4.3 et PECL zip 1.17.1, respectivement, si compilé contre libzip ≥ 1.0.0.

Il semblerait que tu sois dans un cas cocasse avec libzip < 1.0.0 …

Chez le même hébergeur, en SPIP 4.0.4 / PHP7.4.27, pas de problème.

Zip enabled
Zip version 1.19.3
Libzip version 0.11.2

Je ne maitrise pas bien les subtilités de ces questions de versions…

Tu peux peut être tenter dans archiviste/src/ZipArchive.php

- 'lecture' => \ZipArchive::RDONLY,
+ 'lecture' => defined('\ZipArchive::RDONLY') ? \ZipArchive::RDONLY : 0,

Ça donne :
Fatal error: Constant expression contains invalid operations in /XXXX/web/plugins-dist/archiviste/src/ZipArchive.php on line 14

Ce n’est pas la même lib qu’utilise spip_loader ? Car il a bien fonctionné…

Non mais c’est un changement dans l’Archiviste à partir de 4.1.0-beta qui n’utilise plus de vieilles librairies pclzip / pcltar pour utiliser des outils intégrés à PHP, notamment ZipArchive pour les zips.

Mais le cas que tu remontes me semble un peu ennuyeux.
Et je me demande pourquoi la version de libzip est si vieille…

Pour l’erreur c’est peut être

- 'lecture' => \ZipArchive::RDONLY,
+ 'lecture' => defined('ZipArchive::RDONLY') ? \ZipArchive::RDONLY : 0,

Pas mieux pour l’erreur PHP.

Effectivement, chez OVH, c’est mieux :

Zip enabled
Zip version 1.15.6
Libzip version 1.1.2

Cela dit quelque soit ce que je mets chez moi le defined ne génère pas d’erreur… Je suis assez étonné…
Peut être defined('\ZipArchive::RDONLY') ? constant('\ZipArchive::RDONLY') : 0,

Ça devient complètement capilo tracté.

L’erreur est toujours là, j’ai pourtant revérifier 3 fois :frowning:

je vais demander à l’hébergeur pourquoi les lib sont si vieilles.

Je ne sais pas si on doit vraiment s’en inquiéter…, la version 1.x est dans debian depuis 2016 (Debian 9 Stretch) . Et auparavant en 0.11.2 (Debian 8 Jessie)

J’ai posé la question au support tech, on verra le retour.

Par contre, c’est le cas sur les 3 hébergements mutu que j’ai Infomaniak (config par défaut). Faudrait peut-être relance le sondage avec la version de libzip ?

Tu peux vérifier que juste 'lecture' => 0, fonctionne ? et ensuite essayer de trouver le bon code pour vérifier que la constante existe ou pas ?

1 « J'aime »

'lecture' => 0, télécharge et dézippe bien le plugin mais ne l’installe pas dans la foulée, il faut le faire en 2 temps (télécharger puis installer).

Par contre, je sais pas comment vérifier que la constante existe.

Le télécharger puis installer a été corrigé depuis.

<?php

var_dump(ZipArchive::RDONLY); 
1 « J'aime »