---
suivi: 1340
date: 2026-08-14
sujet: reprise_siwi_pdf_disque_storage
chantier: marches_reprise
type: fix
statut: poussé
hash: 10782e46
fichiers:
  - config/filesystems.php
  - app/Http/Controllers/SiwiImportController.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1340_siwi_pdf_disque_storage.md
---

## PROMPT ENVOYÉ

SUIVI #1340 — servir les PDF SIWI via disque Storage (comme factures)
et diagnostic autoporté dans le 503 si le dépôt reste inaccessible en FPM.

## SYNTHÈSE

### Fiches lues
- `#1338` : gate `is_dir`/`is_readable` sur `SIWI_IMPORT_PATH` — 503 pour TOUS
  les documents en prod FPM. LEÇON : factures passent par Storage, pas ce gate.
- `#1337` : Dialog — **non touchée**.
- Pas de `#1339` sur `origin/main` au moment du lot.

### Fix
- Disque `siwi_import` : `storage_path('app/private/siwi-import')` — **pas**
  `SIWI_IMPORT_PATH` (chemin env peut être hors `open_basedir` FPM alors que
  `storage_path()` est le chemin autorisé, comme `factures`).
- Lecture : `exists` / `path` / `size` / `readStream` ; réponse =
  `DepotFactureController::pdf` (`path` + `response()->file`).
- Casse .PDF/.pdf/.Pdf + glob conservés. `^\d+$` conservé.
- 404 fichier introuvable : **sans** bloc diagnostic.
- 503 : open_basedir, user process, is_dir/is_readable par niveau + témoin
  factures + `exists('3834.PDF')`.

### `SIWI_IMPORT_PATH`
Pas supprimé. Encore lu par `SiwiImportPageService::documentsDepotStats`.
`documentPdf` ne l’utilise plus. Ne pas le retirer dans ce lot.

### Vérification écran
**NON faite** (pas de session prod). Lot **non validé écran**.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear && php artisan view:clear
php artisan journal:sync
```

Pas de migrate. Tester Dialog + `/siwi-import/documents/3834/pdf`.

## LEÇON

Sous OVH FPM, un chemin `.env` « identique » à `storage/` peut échouer à
`is_dir`/`is_readable` si `open_basedir` ne contient que la forme
`storage_path()`. Servir comme les factures (`Storage` + `storage_path`).
