====== 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**.