User Tools

Site Tools


ispconfig_php-fpm_aplikacije_dokuwiki_wordpress

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ispconfig_php-fpm_aplikacije_dokuwiki_wordpress [2026/01/04 15:02] – created sistemcispconfig_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 videti pravilne 
 +  * 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;DR) =====
- +
-WordPress +
- +
-Nextcloud +
- +
-Laravel / Symfony +
- +
-vse PHP aplikacije na ISPConfig + PHP-FPM +
- +
-1️⃣ Povzetek problema (TL;DR)+
  
 Če uporabljaš: Če uporabljaš:
  
-ISPConfig+  * ISPConfig   
 +  * PHP-FPM   
 +  * Apache ali Nginx  
  
-PHP-FPM +⚠️ **NE SMEŠ uporabljati absolutnih poti v aplikacijskih konfiguracijah**, npr.:
- +
-Apache ali Nginx +
- +
-⚠️ NE SMEŠ uporabljati absolutnih poti v aplikacijskih konfiguracijah, npr.:+
  
 +<code>
 /var/www/clients/clientX/webY/web/... /var/www/clients/clientX/webY/web/...
 +</code>
  
 +Če to narediš:
  
-Če to naredišbo:+  * CLI orodja kažejoda 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['savedir'] = '/var/www/clients/client1/web2/web/data'; 
 +</code>
  
-To NI klasičen permission problem, ampak:+Zakaj je narobe:
  
-konflikt med open_basedir in absolutnimi potmi+  * 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['savedir'] = './data'; 
 +</code>
  
-ne more pisati v wp-content/uploads+Ali pusti prazno, če aplikacija podpira autodetection:
  
-random “permission denied”, čeprav so pravice pravilne +<code php>
- +
-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 +
-/var/www/clients/client1/web2/web/data +
- +
-✅ VEDNO +
- +
-relativne poti +
- +
-ali poti znotraj document root-a +
- +
-Primeri: +
- +
-./data +
-./uploads +
-./cache +
-./files +
- +
-5️⃣ DokuWiki – pravilna konfiguracija +
-conf/dokuwiki.php +
-$conf['savedir'] = './data';+
 $conf['basedir'] = ''; $conf['basedir'] = '';
 +</code>
  
 +-----
  
-❗ 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('WP_CONTENT_DIR', '/var/www/clients/client1/web2/web/wp-content'); +
- +
-✅ Pravilno +
-define('WP_CONTENT_DIR', __DIR__ . '/wp-content'); +
- +
- +
-ali +
- +
-define('WP_CONTENT_DIR', './wp-content'); +
- +
-7️⃣ Vedno preveri open_basedir (prvi korak) +
-grep -R "open_basedir" /etc/php/*/fpm/pool.d/ +
- +
- +
-Primer: +
- +
-php_admin_value[open_basedir] /var/www/clients/client1/web2/web:... +
- +
- +
-➡️ 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=".getcwd().PHP_EOL; +
-$path="./data/pages"; +
-echo "PATH=$path".PHP_EOL; +
-echo "is_dir=".(is_dir($path)?"YES":"NO").PHP_EOL; +
-echo "writable=".(is_writable($path)?"YES":"NO").PHP_EOL; +
-+
- +
- +
-Č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+<code> 
 +web/ 
 +├── conf/ 
 +├── data/ 
 +│   ├── pages/ 
 +│   ├── cache/ 
 +│   └── locks/ 
 +├── lib/ 
 +├── install.php 
 +└── index.php 
 +</code>
  
-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: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 
 +</code>
  
-❌ 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 "var_dump(is_writable('data/pages'));" 
 +</code>
  
 +Preveri PHP-FPM pool:
  
-Ideja:+<code bash> 
 +grep open_basedir /etc/php/*/fpm/pool.d/webX.conf 
 +</code>
  
-en skript+-----
  
-preveri:+===== ✅ Kako preprečiti ponavljanje napak =====
  
-docroot+✔ Vedno uporabljaj **relativne poti**   
 +✔ Nikoli ne hard-codaj `/var/www/...`   
 +✔ 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