# Livada SEO — Installation & Update Troubleshooting

> Guide pour résoudre les blocages d'installation et de mise à jour rencontrés
> sur certains hébergeurs (Hostinger, OVH, O2Switch, IONOS, etc.).
>
> **À lire si** : vous voyez un écran d'erreur lors de l'installation/mise à jour
> du plugin (405, 403, écran blanc, "rien ne se passe", etc.).
>
> Dernière mise à jour : 2026-05-25 — applicable depuis v1.10.1+

---

## Sommaire

1. [Erreur 405 Not Allowed sur upload ZIP](#1-erreur-405-not-allowed-sur-upload-zip)
2. [Erreur 403 Forbidden sur auto-update](#2-erreur-403-forbidden-sur-auto-update)
3. [Auto-update : "Vos extensions sont toutes à jour" alors qu'une nouvelle version existe](#3-auto-update--vos-extensions-sont-toutes-à-jour-faussement)
4. [Bandeau jaune Livada SEO : "Update check failed"](#4-bandeau-jaune-livada-seo--update-check-failed)
5. [Solution universelle : install via File Manager (Hostinger / cPanel / Plesk)](#5-solution-universelle--install-via-file-manager)
6. [Solution universelle : install via FTP/SFTP (FileZilla)](#6-solution-universelle--install-via-ftpsftp)
7. [Solution universelle : install via WP-CLI (SSH)](#7-solution-universelle--install-via-wp-cli-ssh)
8. [Si rien ne marche : nous contacter](#8-si-rien-ne-marche--nous-contacter)

---

## 1. Erreur 405 Not Allowed sur upload ZIP

### Symptôme

Vous allez dans **WP-admin → Extensions → Ajouter → Téléverser l'extension**, vous
sélectionnez `livada-seo.zip` et cliquez **"Installer maintenant"**. La page affiche :

```
405 Not Allowed
nginx
```

### Cause

Votre hébergeur (le plus souvent Hostinger, parfois IONOS ou O2Switch) bloque les
POST de gros fichiers multipart vers `/wp-admin/update.php?action=upload-plugin`
au niveau du **WAF nginx**, avant même que WordPress reçoive la requête. Ce n'est
**pas un problème du plugin** — vous auriez la même erreur avec n'importe quel
ZIP plugin de plus de quelques centaines de Ko.

### Solution

→ Utilisez le **File Manager** de votre hébergeur (Section 5) ou **FTP**
(Section 6). Ces méthodes contournent complètement la restriction nginx.

---

## 2. Erreur 403 Forbidden sur auto-update

### Symptôme

Lors d'un clic sur **"Mettre à jour maintenant"** sur la ligne du plugin, vous
voyez **403 Forbidden** ou une page WordPress générique d'erreur.

### Causes possibles

1. **WAF côté hébergeur** bloque le téléchargement de notre ZIP depuis livada.io
   (OVH HCDN est connu pour ça sur certains comptes).
2. **Plugin de sécurité** (Solid Security, Wordfence, iThemes Security…) a une
   règle "Disable File Editing" / "Disable File Updates" qui définit
   `DISALLOW_FILE_MODS = true` dans `wp-config.php`.

### Solutions

**Cause 1 (WAF hébergeur)** : utiliser File Manager / FTP (sections 5-6).

**Cause 2 (sécurité WP)** : ouvrir `wp-config.php` et chercher cette ligne :
```php
define( 'DISALLOW_FILE_MODS', true );
```
Si elle existe, la commenter temporairement (`// define(...);`), faire la
mise à jour, puis la réactiver. Ou bien désactiver temporairement la règle
correspondante dans votre plugin de sécurité.

---

## 3. Auto-update : "Vos extensions sont toutes à jour" faussement

### Symptôme

Vous savez qu'une nouvelle version Livada SEO existe (par exemple parce qu'on
vous l'a annoncée par email), mais WordPress affiche **"Vos extensions sont
toutes à jour"** dans `/wp-admin/update-core.php` et le clic "Vérifier à
nouveau" ne change rien.

### Cause

C'est presque toujours un **échec silencieux de `wp_remote_get`** depuis votre
serveur vers `livada.io/api/update/info`, dû à l'une de ces raisons :

- Timeout réseau (votre host est lent à joindre Cloudflare)
- HTTP/2 mal négocié par un vieux PHP curl
- CA bundle SSL cassé sur le serveur
- Constante `WP_HTTP_BLOCK_EXTERNAL = true` dans `wp-config.php` qui bloque les
  appels sortants

### Solution (Livada SEO v1.10.1+)

À partir de la **v1.10.1**, le plugin gère automatiquement ces 4 cas :
- Timeout étendu à 30s
- HTTP/1.1 pinned pour éviter les quirks HTTP/2
- Retry automatique avec `sslverify=false` en fallback
- Whitelist transparente de `livada.io` même si `WP_HTTP_BLOCK_EXTERNAL` est
  actif

Si vous êtes en **v1.10.0 ou antérieur**, vous devez d'abord upgrader **une
seule fois** vers v1.10.1+ via les sections 5/6/7 ci-dessous. Après ça, les
mises à jour futures fonctionneront automatiquement.

Pour forcer un nouveau check sur v1.10.1+ :
- Page **Extensions** → ligne Livada SEO → cliquer **"Check for updates"**
- Si l'update est détectée, le bandeau jaune apparaît immédiatement
- Si elle ne l'est pas, un **bandeau jaune d'erreur** apparaît (voir section 4)

---

## 4. Bandeau jaune Livada SEO : "Update check failed"

### Symptôme

À partir de v1.10.1, si la vérification de mise à jour échoue, vous verrez ce
bandeau dans WP-admin sur les pages Extensions / Mises à jour / Livada SEO :

```
Livada SEO — Update check failed (5 minutes ago)
Code: http_403 — Unexpected HTTP 403 from https://livada.io/api/update/info  (strict SSL)
```

### Lecture du code d'erreur

| Code               | Signification                                    | Action                                                                 |
|--------------------|--------------------------------------------------|------------------------------------------------------------------------|
| `http_timeout`     | Le serveur a mis trop de temps à répondre        | Hébergeur lent — réessayer plus tard, ou installer manuellement (5-7)  |
| `http_403`         | Serveur a refusé la requête                      | WAF/Cloudflare bloque — contactez-nous avec l'IP serveur de votre WP   |
| `http_404`         | URL introuvable                                  | Bug serveur livada.io — contactez-nous immédiatement                   |
| `http_5xx`         | Erreur serveur livada.io                         | Réessayer dans quelques heures                                         |
| `http_request_failed` | Connexion impossible (DNS, TLS, etc.)         | Vérifier que `livada.io` est joignable depuis votre serveur            |
| `empty_body`       | Réponse vide                                      | Bug serveur — contactez-nous                                           |
| `invalid_json`     | Réponse pas du JSON valide                       | Probablement page de WAF interposée — contactez-nous                   |

Si le bandeau indique `(relaxed SSL)`, ça veut dire que le retry SSL a aussi
échoué — c'est donc bien un blocage réseau plus profond.

---

## 5. Solution universelle : install via File Manager

Cette méthode marche pour **tous les hébergeurs** qui exposent un File Manager
web (Hostinger hPanel, cPanel, Plesk, OVH Manager, IONOS, etc.) et **contourne
intégralement** les restrictions WAF/nginx.

### Étapes (exemple Hostinger hPanel)

1. **Sauvegarde d'abord** (par sécurité) :
   - Si WPvivid Backup ou UpdraftPlus est installé : lancer un backup
   - Sinon : exporter au moins la DB via Hostinger → Databases → phpMyAdmin → Export

2. **Télécharger le ZIP Livada SEO** sur votre ordinateur :
   - Depuis [https://livada.io/downloads/livada-seo.zip](https://livada.io/downloads/livada-seo.zip)
   - Ou depuis votre email d'achat (le lien expire dans 7 jours)

3. **Ouvrir le File Manager** :
   - Hostinger : hPanel → Hosting → votre site → **Files** → **File Manager**
   - cPanel : tableau de bord → **File Manager**
   - Plesk : Files → File Manager
   - OVH : Manager → Hébergement → onglet "FTP / SSH" → File Manager

4. **Naviguer au dossier plugins** :
   - Chemin : `public_html/wp-content/plugins/`
   - (Sur certains hosts : `httpdocs/wp-content/plugins/` ou `www/wp-content/plugins/`)

5. **Renommer l'ancien plugin** (rollback safety) :
   - Si vous avez déjà une version installée, clic-droit sur `livada-seo/` →
     **Rename** → `livada-seo.OLD`
   - Si c'est une première install, ignorer cette étape

6. **Upload le ZIP** :
   - Cliquer **"Upload"** en haut du File Manager
   - Sélectionner `livada-seo.zip` (téléchargé en étape 2)
   - Attendre la fin de l'upload (généralement < 30s pour 1.1 Mo)

7. **Extraire le ZIP** :
   - Clic-droit sur `livada-seo.zip` (maintenant dans `plugins/`) → **Extract**
   - Confirmer la destination (`/wp-content/plugins/`)
   - Le dossier `livada-seo/` est créé automatiquement

8. **Vérifier** :
   - Aller sur `https://votre-site.com/wp-admin/plugins.php`
   - Vous devez voir **Livada SEO 1.10.1** (ou plus récent)
   - Le plugin reste **activé** automatiquement (WP détecte le dossier au même
     emplacement)

9. **Nettoyage** :
   - Si tout fonctionne : retourner dans File Manager et supprimer
     `livada-seo.zip` (le fichier ZIP n'est plus utile)
   - Si vous aviez renommé l'ancien plugin en `livada-seo.OLD` : supprimer ce
     dossier aussi

---

## 6. Solution universelle : install via FTP/SFTP

Si vous préférez utiliser un client FTP (FileZilla, Cyberduck, WinSCP…) :

### Pré-requis

- Credentials FTP/SFTP de votre hébergement (host, port, user, password)
- Le ZIP `livada-seo.zip` téléchargé localement
- Le ZIP **extrait** localement → dossier `livada-seo/` sur votre ordi

### Étapes

1. **Sauvegarde d'abord** (étape 1 de la section 5)

2. **Extraire le ZIP localement** :
   - Sur Windows : clic-droit `livada-seo.zip` → "Extraire tout"
   - Sur Mac : double-clic
   - Vous obtenez un dossier `livada-seo/` avec tous les fichiers du plugin

3. **Se connecter via FTP/SFTP** :
   - Ouvrir FileZilla / Cyberduck
   - Renseigner host + user + password
   - Connexion

4. **Naviguer vers** `/public_html/wp-content/plugins/` (ou équivalent)

5. **Renommer l'ancien plugin** :
   - Clic-droit sur `livada-seo/` (côté serveur) → Rename → `livada-seo.OLD`

6. **Upload le nouveau dossier** :
   - Glisser-déposer le dossier `livada-seo/` local → côté serveur
   - Attendre la fin du transfert (peut prendre 1-2 min)

7. **Vérifier + nettoyage** : comme étapes 8-9 de la section 5

---

## 7. Solution universelle : install via WP-CLI (SSH)

Pour les utilisateurs avancés ayant accès SSH (Hostinger Business+, OVH VPS,
DigitalOcean, etc.) :

```bash
# 1. SSH dans le serveur
ssh user@your-server.com

# 2. Aller dans le dossier WordPress
cd /home/user/public_html  # adapter au chemin

# 3. Backup le plugin existant (au cas où)
mv wp-content/plugins/livada-seo wp-content/plugins/livada-seo.OLD

# 4. Installer la dernière version directement depuis livada.io
wp plugin install https://livada.io/downloads/livada-seo.zip --force --activate

# 5. Si tout marche, supprimer le backup
rm -rf wp-content/plugins/livada-seo.OLD
```

L'option `--force` permet de remplacer un plugin existant. `--activate`
réactive automatiquement après install.

---

## 8. Si rien ne marche : nous contacter

Si après avoir essayé sections 5, 6 et 7 vous avez toujours un problème :

**Avant de nous écrire**, collectez ces informations (ça nous aide à diagnostiquer
en 5 min au lieu de 5 jours) :

1. **URL du site WP** où vous installez
2. **Hébergeur** (Hostinger, OVH, cPanel, etc.)
3. **Version WordPress** (`/wp-admin/update-core.php` → "Version actuelle")
4. **Version PHP** (`/wp-admin/site-health.php?tab=debug` → section "Serveur" → PHP version)
5. **Méthode tentée** (upload UI, File Manager, FTP, WP-CLI…)
6. **Message d'erreur exact** (copier-coller, ou screenshot)
7. **Si bandeau jaune Livada SEO visible** : le code et le message exacts

**Contact** : support@livada.io (réponse < 24h ouvrées)

Ou via le formulaire de support sur [https://livada.io/contact](https://livada.io/contact)

---

## Annexe — Tableau de compatibilité hébergeurs (constatations terrain)

| Hébergeur            | Upload UI WP-admin | File Manager | FTP/SFTP | WP-CLI SSH |
|----------------------|---------------------|--------------|----------|------------|
| Hostinger (Premium)  | ⚠️ parfois 405      | ✅            | ✅        | ⚠️ Business+|
| Hostinger (Single)   | ⚠️ souvent 405      | ✅            | ✅        | ❌          |
| OVH Mutualisé        | ✅ généralement OK   | ✅            | ✅        | ❌          |
| OVH VPS              | ✅                  | n/a          | ✅        | ✅          |
| O2Switch             | ✅                  | ✅            | ✅        | ✅          |
| IONOS                | ⚠️ parfois 403      | ✅            | ✅        | ⚠️ payant   |
| Infomaniak           | ✅                  | ✅            | ✅        | ✅          |
| WP Engine            | ⚠️ filtre fichiers   | ✅            | ✅ (SFTP) | ✅          |
| SiteGround           | ✅                  | ✅            | ✅        | ⚠️ payant   |

Légende : ✅ marche / ⚠️ avec restrictions / ❌ indisponible

---

*Ce guide est maintenu par l'équipe Livada. Dernière mise à jour : 2026-05-25.
Pour suggestions/corrections : support@livada.io*
