====== ISPConfig + PHP-FPM + PHP aplikacije (DokuWiki, WordPress …) ======
===== 🎯 Namen dokumenta =====
Ta dokument opisuje:
* zakaj pride do **permission napak**, čeprav so pravice videti pravilne
* kako **pravilno namestiti PHP aplikacije** na ISPConfig
* kako **preprečiti ponavljanje istih napak** pri novih spletnih straneh
===== Velja za =====
* **DokuWiki**
* **WordPress**
* **Nextcloud**
* **Laravel / Symfony**
* vse **PHP aplikacije na ISPConfig + PHP-FPM**
-----
===== 🧠 Povzetek problema (TL;DR) =====
Če uporabljaš:
* ISPConfig
* PHP-FPM
* Apache ali Nginx
⚠️ **NE SMEŠ uporabljati absolutnih poti v aplikacijskih konfiguracijah**, npr.:
/var/www/clients/clientX/webY/web/...
Če to narediš:
* CLI orodja kažejo, da je vse **OK**
* `is_writable()` vrne **TRUE**
* aplikacija (installer) pa **še vedno javlja permission napake**
-----
===== 🔍 Root cause (kaj je bilo v resnici narobe) =====
Ključna kombinacija:
* ISPConfig uporablja **PHP-FPM pool-e**
* PHP-FPM ima nastavljen **open_basedir**
* aplikacija uporablja **hard-coded absolutno pot**
* pot **ni vključen v open_basedir**
Rezultat:
> PHP nima pravice dostopati do direktorija,
> čeprav ima filesystem pravilne pravice.
-----
===== ❌ Napačen primer =====
$conf['savedir'] = '/var/www/clients/client1/web2/web/data';
Zakaj je narobe:
* pot je absolutna
* vezana na en web ID
* krši PHP-FPM `open_basedir`
-----
===== ✅ Pravilna rešitev =====
Uporabljaj **relativne poti glede na DocumentRoot**:
$conf['savedir'] = './data';
Ali pusti prazno, če aplikacija podpira autodetection:
$conf['basedir'] = '';
-----
===== 📂 Priporočena struktura direktorijev =====
web/
├── conf/
├── data/
│ ├── pages/
│ ├── cache/
│ └── locks/
├── lib/
├── install.php
└── index.php
-----
===== 🔐 Priporočene pravice (ISPConfig standard) =====
chown -R webX:clientY web/data web/conf
chmod -R 2775 web/data web/conf
setfacl -R -m u:webX:rwx,g:clientY:rwx web/data web/conf
setfacl -R -d -m u:webX:rwx,g:clientY:rwx web/data web/conf
-----
===== 🛠 Diagnostika (če se zatakne) =====
Preveri kot **site user**:
sudo -u webX php -r "var_dump(is_writable('data/pages'));"
Preveri PHP-FPM pool:
grep open_basedir /etc/php/*/fpm/pool.d/webX.conf
-----
===== ✅ Kako preprečiti ponavljanje napak =====
✔ Vedno uporabljaj **relativne poti**
✔ Nikoli ne hard-codaj `/var/www/...`
✔ Razumi, da PHP-FPM ≠ CLI
✔ Uporabi checklist pred installerjem
-----
===== 📌 Povzetek v enem stavku =====
> Na ISPConfig + PHP-FPM **filesystem pravice niso dovolj** –
> aplikacija mora delovati **znotraj open_basedir konteksta**.