Limita l'accesso ai file in php.ini

0

Qualcuno può spiegarmi la differenza tra include_path e open_basedir in PHP? Il mio php.ini assomiglia a questo:

include_path = ".:/usr/share/php:/usr/share/pear:/var/www"

Se per esempio provo a usare include('../../etc/passwd'); il file verrà incluso. D'altra parte, quando sto modificando il mio php.ini come questo l'output è vuoto:

open_basedir = /var/www

Perché è questo? Ho pensato che usare include_path limiterà l'accesso ai file alle directory elencate qui?

    
posta Jason 14.09.2013 - 09:14
fonte

1 risposta

0

La include_path direttiva è un elenco di directory da cercare prima i file inclusi, simile alla variabile ambientale $ PATH di bash.

Quindi un nome / percorso di file assoluto come questo:

include_once('/var/www/domain.com/htdocs/includes/header.php');
include_once('/var/www/domain.com/htdocs/includes/footer.php');

Può essere sostituito con un nome di file relativo come questo:

include_path('/var/www/domain.com/htdocs/includes:.');
include_once('header.php');
include_once('footer.php');

Questo è almeno il modo in cui lo capisco. Non ha nulla a che fare con la sicurezza e limitando le directory, è quello di creare un percorso di ricerca personalizzato per gli include comuni.

open_basedir è ciò che stai cercando, limita il lettura dei file nelle directory specificate. In base alla tua domanda, sembra che funzioni come progettato.

    
risposta data 14.09.2013 - 10:47
fonte

Leggi altre domande sui tag