ispconfig_php-fpm_aplikacije_dokuwiki_wordpress
Differences
This shows you the differences between two versions of the page.
| ispconfig_php-fpm_aplikacije_dokuwiki_wordpress [2026/01/04 15:02] – created sistemc | ispconfig_php-fpm_aplikacije_dokuwiki_wordpress [2026/01/04 15:07] (current) – sistemc | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | 🎯 Namen dokumenta | + | ====== ISPConfig + PHP-FPM + PHP aplikacije (DokuWiki, WordPress …) ====== |
| + | |||
| + | ===== 🎯 Namen dokumenta | ||
| Ta dokument opisuje: | Ta dokument opisuje: | ||
| - | zakaj pride do “permission” napak, čeprav so pravice pravilne | + | * zakaj pride do **permission napak**, čeprav so pravice |
| + | * kako **pravilno namestiti PHP aplikacije** na ISPConfig | ||
| + | * kako **preprečiti ponavljanje istih napak** pri novih spletnih straneh | ||
| - | kako pravilno namestiti PHP aplikacije na ISPConfig | + | ===== Velja za ===== |
| - | kako preprečiti ponavljanje istih napak pri novih straneh | + | * **DokuWiki** |
| + | * **WordPress** | ||
| + | * **Nextcloud** | ||
| + | * **Laravel / Symfony** | ||
| + | * vse **PHP aplikacije na ISPConfig + PHP-FPM** | ||
| - | Velja za: | + | ----- |
| - | DokuWiki | + | ===== 🧠 Povzetek problema (TL; |
| - | + | ||
| - | WordPress | + | |
| - | + | ||
| - | Nextcloud | + | |
| - | + | ||
| - | Laravel / Symfony | + | |
| - | + | ||
| - | vse PHP aplikacije na ISPConfig + PHP-FPM | + | |
| - | + | ||
| - | 1️⃣ | + | |
| Če uporabljaš: | Če uporabljaš: | ||
| - | ISPConfig | + | * ISPConfig |
| + | * PHP-FPM | ||
| + | * Apache ali Nginx | ||
| - | PHP-FPM | + | ⚠️ |
| - | + | ||
| - | Apache ali Nginx | + | |
| - | + | ||
| - | ⚠️ NE SMEŠ uporabljati absolutnih poti v aplikacijskih konfiguracijah, | + | |
| + | < | ||
| / | / | ||
| + | </ | ||
| + | Če to narediš: | ||
| - | Če to narediš, bo: | + | * CLI orodja kažejo, da je vse **OK** |
| + | * `is_writable()` vrne **TRUE** | ||
| + | * aplikacija (installer) pa **še vedno javlja permission napake** | ||
| - | CLI kazal, da je vse OK | + | ----- |
| - | PHP is_writable() kazal OK | + | ===== 🔍 Root cause (kaj je bilo v resnici narobe) ===== |
| - | aplikacija (installer) pa bo še vedno javljala napake | + | Ključna kombinacija: |
| - | 2️⃣ Root cause (kaj je bilo v resnici narobe) | + | * ISPConfig uporablja **PHP-FPM pool-e** |
| - | Ključna kombinacija | + | * PHP-FPM ima nastavljen **open_basedir** |
| + | * aplikacija uporablja **hard-coded absolutno pot** | ||
| + | * pot **ni vključen v open_basedir** | ||
| - | ISPConfig uporablja open_basedir | + | Rezultat: |
| - | PHP-FPM omeji dostop PHP-ja na določene poti | + | > PHP nima pravice dostopati do direktorija, |
| + | > čeprav ima filesystem pravilne pravice. | ||
| - | aplikacija (npr. DokuWiki) uporablja absolutne poti | + | ----- |
| - | aplikacija interno dela dodatne varnostne checke | + | ===== ❌ Napačen primer ===== |
| - | ➡️ Ti checki padejo, čeprav ima PHP pravice. | + | <code php> |
| + | $conf[' | ||
| + | </ | ||
| - | To NI klasičen permission problem, ampak: | + | Zakaj je narobe: |
| - | konflikt med open_basedir | + | * pot je absolutna |
| + | * vezana na en web ID | ||
| + | * krši PHP-FPM `open_basedir` | ||
| - | 3️⃣ Tipični simptomi | + | ----- |
| - | Če vidiš kaj od tega, je skoraj zagotovo to ta problem: | + | ===== ✅ Pravilna rešitev ===== |
| - | DokuWiki | + | Uporabljaj **relativne poti glede na DocumentRoot**: |
| - | datadir (pages) is not found or not writable | + | |
| - | WordPress | + | <code php> |
| + | $conf[' | ||
| + | </ | ||
| - | ne more pisati v wp-content/ | + | Ali pusti prazno, če aplikacija podpira autodetection: |
| - | random “permission denied”, čeprav so pravice pravilne | + | < |
| - | + | ||
| - | Splošno | + | |
| - | + | ||
| - | PHP test skripta kaže WRITE=OK | + | |
| - | + | ||
| - | installer ali aplikacija javi napako | + | |
| - | + | ||
| - | po popravku pravic se NIČ ne spremeni | + | |
| - | + | ||
| - | 4️⃣ ZLATO PRAVILO (velja za vse aplikacije) | + | |
| - | ❌ NIKOLI na ISPConfig + PHP-FPM | + | |
| - | / | + | |
| - | + | ||
| - | ✅ VEDNO | + | |
| - | + | ||
| - | relativne poti | + | |
| - | + | ||
| - | ali poti znotraj document root-a | + | |
| - | + | ||
| - | Primeri: | + | |
| - | + | ||
| - | ./data | + | |
| - | ./uploads | + | |
| - | ./cache | + | |
| - | ./files | + | |
| - | + | ||
| - | 5️⃣ DokuWiki – pravilna konfiguracija | + | |
| - | conf/ | + | |
| - | $conf[' | + | |
| $conf[' | $conf[' | ||
| + | </ | ||
| + | ----- | ||
| - | ❗ Absolutne poti ne uporabljaj. | + | ===== 📂 Priporočena struktura direktorijev ===== |
| - | + | ||
| - | 6️⃣ WordPress – enako pravilo | + | |
| - | + | ||
| - | WordPress večinoma dela pravilno sam, težava nastane, če: | + | |
| - | + | ||
| - | ročno definiraš poti | + | |
| - | + | ||
| - | cache plugin nastavi absolutne poti | + | |
| - | + | ||
| - | ❌ Napačno | + | |
| - | define(' | + | |
| - | + | ||
| - | ✅ Pravilno | + | |
| - | define(' | + | |
| - | + | ||
| - | + | ||
| - | ali | + | |
| - | + | ||
| - | define(' | + | |
| - | + | ||
| - | 7️⃣ Vedno preveri open_basedir (prvi korak) | + | |
| - | grep -R " | + | |
| - | + | ||
| - | + | ||
| - | Primer: | + | |
| - | + | ||
| - | php_admin_value[open_basedir] | + | |
| - | + | ||
| - | + | ||
| - | ➡️ To pomeni: | + | |
| - | + | ||
| - | PHP vidi samo te poti | + | |
| - | + | ||
| - | aplikacija mora uporabljati relativne poti | + | |
| - | + | ||
| - | 8️⃣ Minimalni PHP sanity test (za vsako aplikacijo) | + | |
| - | sudo -u web2 php -r ' | + | |
| - | echo "CWD=" | + | |
| - | $path=" | + | |
| - | echo "PATH=$path" | + | |
| - | echo " | + | |
| - | echo " | + | |
| - | ' | + | |
| - | + | ||
| - | + | ||
| - | Če dobiš: | + | |
| - | + | ||
| - | is_dir=YES | + | |
| - | writable=YES | + | |
| - | + | ||
| - | + | ||
| - | ➡️ PHP bo delal | + | |
| - | ➡️ če aplikacija še vedno jamra → konfiguracija aplikacije je napačna | + | |
| - | + | ||
| - | 9️⃣ Zakaj se zdi, da se “vrtimo v krogu” | + | |
| - | + | ||
| - | Ker so bili: | + | |
| - | + | ||
| - | ✔ permissions pravilni | + | |
| - | + | ||
| - | ✔ owner/group pravilni | + | |
| - | + | ||
| - | ✔ PHP-FPM servis aktiven | + | |
| - | + | ||
| - | ✔ socket obstajal | + | |
| - | + | ||
| - | Ampak: | + | |
| - | + | ||
| - | ❌ aplikacija je uporabljala absolutne poti | + | |
| - | + | ||
| - | ❌ open_basedir je to blokiral | + | |
| - | + | ||
| - | To je najbolj zahrbtna napaka, ker: | + | |
| - | + | ||
| - | sistemski admin vidi “vse OK” | + | |
| - | + | ||
| - | aplikacija pa ima svoj varnostni model | + | |
| - | + | ||
| - | 🔟 Kako to preprečiti za VSE bodoče strani | + | |
| - | Priporočena praksa | + | |
| - | + | ||
| - | V glavi vsakega projekta si zapiši: | + | |
| - | + | ||
| - | Če je ISPConfig + PHP-FPM → nikoli absolutne poti v aplikaciji | + | |
| - | + | ||
| - | To velja za: | + | |
| - | + | ||
| - | Wiki | + | |
| - | + | ||
| - | WordPress | + | |
| - | + | ||
| - | Nextcloud | + | |
| - | + | ||
| - | Laravel | + | |
| - | + | ||
| - | Symfony | + | |
| - | vse PHP CMS-e | + | < |
| + | web/ | ||
| + | ├── conf/ | ||
| + | ├── data/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | ├── lib/ | ||
| + | ├── install.php | ||
| + | └── index.php | ||
| + | </ | ||
| - | 1️⃣1️⃣ Kaj NE priporočam (razen če veš, kaj delaš) | + | ----- |
| - | odstranjevanje open_basedir | + | ===== 🔐 Priporočene pravice (ISPConfig standard) ===== |
| - | globalno rahljanje PHP omejitev | + | <code bash> |
| + | chown -R webX: | ||
| + | chmod -R 2775 web/data web/conf | ||
| + | setfacl -R -m u: | ||
| + | setfacl -R -d -m u: | ||
| + | </ | ||
| - | ❌ slabša varnost | + | ----- |
| - | ❌ ISPConfig update lahko vse povozi | + | |
| - | 1️⃣2️⃣ Orodje za prihodnost | + | ===== 🛠 Diagnostika (če se zatakne) ===== |
| - | Uporabi ali razširi skripto: | + | Preveri kot **site user**: |
| - | isp_dokuwiki_doctor.sh | + | <code bash> |
| + | sudo -u webX php -r " | ||
| + | </ | ||
| + | Preveri PHP-FPM pool: | ||
| - | Ideja: | + | <code bash> |
| + | grep open_basedir / | ||
| + | </ | ||
| - | en skript | + | ----- |
| - | preveri: | + | ===== ✅ Kako preprečiti ponavljanje napak ===== |
| - | docroot | + | ✔ Vedno uporabljaj **relativne poti** |
| + | ✔ Nikoli ne hard-codaj `/ | ||
| + | ✔ Razumi, da PHP-FPM ≠ CLI | ||
| + | ✔ Uporabi checklist pred installerjem | ||
| - | open_basedir | + | ----- |
| - | writable mape | + | ===== 📌 Povzetek v enem stavku ===== |
| - | absolutne poti v configih | + | > Na ISPConfig + PHP-FPM **filesystem pravice niso dovolj** – |
| + | > aplikacija mora delovati **znotraj open_basedir konteksta**. | ||
| - | ➡️ 10 sekund diagnostike namesto 2 ur kroženja. | ||
ispconfig_php-fpm_aplikacije_dokuwiki_wordpress.txt · Last modified: by sistemc
