Mise à jour de spip (de 2016) vers 4.4.9 avec passage de php4 vers php 8.

Bonjour,

J’ai un serveur en local chez moi qui héberge un site sous spip. Ayant fait la mise à jour de mon serveur Debian 11 vers Debian 13, la version de php a fait un saut en avant.
Le site en spip n’ayant pas été mis à jour par son proprio est complètement dysfonctionnel. Cela retournait beaucoup d’erreur dans les logs d’apache en disant que le php n’était pas valide en gros.

J’ai essayé d’utiliser le spip_loader.php, mais il essayait de charger/inclure des fichiers de l’installation de spip et cela me donnait également des erreurs php.

J’ai donc pris les fichiers de la version 4.4.9 et j’ai tous transférer sur le serveur via ssh. J’ai mis à jour le .htaccess du site avec la nouvelle version.

Depuis, si je vais sur l’url, spip_loader.php j’ai une popup (on va appelé ça comme ça), qui me dit:

Accès interdit

Vous n’avez pas accès à cette page.
Log in

Si je clique sur log in, j’arrive sur page blanche (comme toutes les pages du site).
Si j’affiche le code source de la page il n’y a que ça: <!-- Erreur -->

Je dois dire que mon niveau en spip est proche de 0. Vous auriez des pistes pour débugger ça ?

L’installation avez pas mal de plugins installés, et le nom de certains dossiers ont changé je pense. J’ai fait une backup de site avant de faire la moindre modif mais bon.

Merci pour votre aide.

Regarder les logs PHP pourrait te renseigner. Leur emplacement dépend de ton hébergement.

Regarder les logs SPIP également. Ils sont dans le sous dossier tmp/log du dossier d’installation de SPIP.

ca c’est typique d’une erreur php, que SPIP masque par sécurité, donc effectivement les logs PHP devraient aider

vérifie également que tu a bien les extensions PHP requises Configuration requise - SPIP

Il serait utile de connaître la version de SPIP installée. On peut la trouver dans ecrire/inc_version.php (rechercher spip_version_branche).
Le titre du message indique « passage de php4 vers php 8 » ? C’était vraiment php 4 ? ou php 7.4 (version par défaut de Debian 11 si j’ai bien lu) ?

L’héberger c’est moi, donc je sais où sont les logs PHP.
Il y a rien de probant pour le moment.

Yep, L’ancienne version est 3.1.1.

C’était php 5, je pense. En tout cas, le fichier parle de cette version.

J’ai effectivement des trucs dans mes logs (après avoir désactiver la ligne sur les logs dant le fichier inc_machin truc).

PHP Warning:  Undefined global variable $profondeur_url in /home/webmaster/www/spip/ecrire/inc/urls.php on line 68
[Sat Feb 28 00:25:49.202266 2026] [php:warn] [pid 1135503:tid 1135503] [client 92.53.90.20:37916] PHP Warning:  Undefined global variable $profondeur_url in /home/webmaster/www/spip/ecrire/inc/urls.php on line 68
[Sat Feb 28 00:26:24.922099 2026] [php:warn] [pid 1135505:tid 1135505] [client 43.152.72.231:56624] PHP Warning:  Undefined global variable $profondeur_url in /home/webmaster/www/spip/ecrire/inc/urls.php on line 68, referer: http://webmaster.com/spip/spip.php/dist/IMG/IMG/doc/IMG/rtf/spip.php?rubrique142
[Sat Feb 28 00:27:04.356974 2026] [php:warn] [pid 1135502:tid 1135502] [client 216.244.66.203:56992] PHP Warning:  Undefined global variable $profondeur_url in /home/webmaster/www/spip/ecrire/inc/urls.php on line 68
[Sat Feb 28 00:27:49.238219 2026] [php:error] [pid 1135499:tid 1135499] [client 190.60.45.139:38232] script '/var/www/html/search.php' not found or unable to stat
[Sat Feb 28 00:28:57.288102 2026] [php:error] [pid 1135500:tid 1135500] [client 80.15.125.140:35302] script '/var/www/webmaster/spip.php' not found or unable to stat
[Sat Feb 28 00:31:38.564446 2026] [php:error] [pid 1135500:tid 1135500] [client 80.15.125.140:51384] script '/var/www/webmaster/spip.php' not found or unable to stat

Je comprends pas trop d’ou vient les erreurs: /var/www/webmaster/spip.php’ not found or unable to stat car le site est sur /var/www/webmaster/spip/spip.php’ et il y a le $profondeur_url. Également.

SPIP 3.1était compatible max php 7.1 (voir Branches en fin de vie - SPIP) Il faudrait passer d’abord en version 3.2.19 (avec une version php max7.1) puis de là passer en php 8 et monter directement dans la dernière version 4.4.11.
Il est possible de réinstaller un spip neuf en 3.2.19 d’y brancher la base de données actuelle, remettre le dossier IMG.
Concernant le dossier squelettes s’il y a beaucoup de personnalisations il y aura sans doute des adaptations à faire. Mais déjà les données seront accessibles…

Je pense essayer de faire un install 4.4.9 complètement clean, sur une nouvelle base de donnée. Et de la, réintégrer des bouts du vieux site. Parce que j’ai un peu la flemme de jouer avec les versions de PHP.

Si c’est un petit site c’est jouable à la main… Attention aux prérequis cités plus haut dans le message de @maieul.

En testant une install compléte, j’ai constaté que le dossier config devait avoir des permissions en écriture, ce n’était pas le cas. En fixant cela, le site est de nouveau disponible. Ça fonctionne, je suppose que certaine fonctionnalité d’administration ne doivent pas fonctionner, ni même probablement le login mais c’est une étape.

Ah très bien ! Au moins tu vas récupérer le contenu du site. Tiens nous informés de la suite :slight_smile: