Restrinja el acceso a archivos en php.ini

0

¿Puede alguien explicarme la diferencia entre include_path y open_basedir en PHP? Mi php.ini tiene este aspecto:

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

Si, por ejemplo, intento usar include('../../etc/passwd'); , se incluirá el archivo. Por otro lado, cuando estoy modificando mi php.ini así, la salida está vacía:

open_basedir = /var/www

¿Por qué es esto? Pensé que usar include_path restringirá el acceso al archivo a los directorios que figuran allí.

    
pregunta Jason 14.09.2013 - 09:14
fuente

1 respuesta

0

La directiva include_path es una lista de directorios para buscar Archivos incluidos primero, similar a la variable ambiental $ PATH de bash.

Por lo tanto, un nombre de archivo / ruta absoluta como este:

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

Se puede reemplazar con un nombre de archivo relativo como este:

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

Esto es al menos como lo entiendo. No tiene nada que ver con la seguridad y la restricción de directorios, es crear una ruta de búsqueda personalizada para las inclusiones comunes.

open_basedir es lo que está buscando, limita la Lectura de archivos a los directorios especificados. Según su pregunta, parece que está funcionando como se diseñó.

    
respondido por el David Houde 14.09.2013 - 10:47
fuente

Lea otras preguntas en las etiquetas