doc:appunti:linux:sa:apache_php_optimization
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:sa:apache_php_optimization [2025/02/28 12:35] – [Modulo MPM (quale?), proxy_fcgi e php-fpm] niccolo | doc:appunti:linux:sa:apache_php_optimization [2025/03/31 10:42] (current) – [Metodo chroot] niccolo | ||
---|---|---|---|
Line 165: | Line 165: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | ===== Segregazione VirtualHost ===== | ||
+ | |||
+ | Su un host che ospita più di un VirtualHost potrebbe essere desiderabile isolare il PHP di un VirtualHost dai file degli altri VirtualHost ed anche dai file dell' | ||
+ | |||
+ | Essenzialmente si può agire con un **chroot** per processo PHP oppure con la direttiva **open_basedir** del PHP. | ||
+ | |||
+ | Il primo metodo è quello formalmente più corretto e sicuro, in quanto il processo PHP sarebbe effettivamente in esecuzione in un ambiente chroot e sarebbe il sistema operativo stesso a impedirgli di accedere fuori dalla propria DocumentRoot. Tuttavia questo metodo comporta **notevoli problemi** perché ad esempio impedisce l' | ||
+ | |||
+ | Il metodo che utilizza la direttiva **open_basedir** invece è più flessibile, ma affida la sicurezza all' | ||
+ | |||
+ | ==== Metodo chroot ==== | ||
+ | |||
+ | Supponiamo che la DocumentRoot di un sito sia **/ | ||
+ | |||
+ | < | ||
+ | [site.example.org] | ||
+ | user = site-example-org | ||
+ | group = site-example-org | ||
+ | |||
+ | ; This PHP-FPM instance is chrooted. | ||
+ | chroot = / | ||
+ | chdir = /www | ||
+ | ; Values set here with php_admin_value belong to this pool only. | ||
+ | ; doc_root: (without chroot would be empty or the Apache DocumentRoot). | ||
+ | php_admin_value[doc_root] = /www | ||
+ | ; cgi.fix_pathinfo: | ||
+ | ; See https:// | ||
+ | php_admin_value[cgi.fix_pathinfo] = 0 | ||
+ | </ | ||
+ | |||
+ | In questo modo si ha un processo **php-fpm** che gira con le credenziali di //user// e //group// indicate e che è chrooted nella directory indicata. | ||
+ | |||
+ | Purtroppo questa soluzione impedisce il corretto funzionamento delle librerie PHP, ad esempio il pacchetto **php-mail** installa i propri file in **/ | ||
+ | |||
+ | Vedere la discussione **[[https:// | ||
+ | |||
+ | ==== Metodo open_basedir ==== | ||
+ | |||
+ | Con la direttiva PHP **open_basedir** si pone un limite a tutte le funzioni PHP che aprono file dal filesystem (ad esempio '' | ||
+ | |||
+ | Ecco quindi come configurare l' | ||
+ | |||
+ | < | ||
+ | [site.example.org] | ||
+ | user = site-example-org | ||
+ | group = site-example-org | ||
+ | php_admin_value[open_basedir] = / | ||
+ | </ | ||
+ | |||
+ | Come si vede è necessario avere l' | ||
===== Web Resources ===== | ===== Web Resources ===== |
doc/appunti/linux/sa/apache_php_optimization.1740742558.txt.gz · Last modified: 2025/02/28 12:35 by niccolo