hola yo intento hacer algo parecido
usando
$_SERVER['DOCUMENT_ROOT']
la situacion es que uso la funcion "scandir" y en mi servidor local usandolo de esa forma funciona perfecto algo asi
scandir($_SERVER['DOCUMENT_ROOT] . "/");
esto me trae todos los archivos que estan en la raiz del servidor.
Pero cuando lo subo a un servidor en linea que estoy usando para pruebas no me funciona me devuelve error en la funcion scandir:
Código:
Warning: scandir() [function.scandir]: open_basedir restriction in effect. File(/usr/local/apache/htdocs) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/a7640195/public_html/path.php on line 18
mientras que en mi servidor local funciona sin problemas, pero si hago esto:
scandir("./");
funciona sin problemas y me devuelve un array con todo el contenido de la carpeta raiz.
el problema es que esta solucion no me va ya que si tengo el script dentro de una carpeta me devuelve solo el contenido de su carpeta y yo necesito que sea el de la raiz.
cual puede ser el problema de que funcione en mi servidor y el que uso de pruebas en linea no?
/*EDITO*/
bueno por el momento ya pude resolver el problema aunque creo que no de una forma eficiente pero cumple con lo que necesito hice una funcion que devuelve la ruta raiz de forma relativa al script actual.
Código PHP:
function root_path(){
$this_directory = dirname(__FILE__);
$archivos = scandir($this_directory);
$atras = "";
$cuenta = 0;
while (true){
foreach($archivos as $actual){
if ($actual == "root.path"){
if ($cuenta == 0)
return "./";
return $atras;
}
}
$cuenta++;
$atras = $atras . "../";
$archivos = scandir($atras);
}
}
para que funcione hay que crear un archivo llamado
root.path en la raiz de nuestro servidor o la ruta que queramos que nos devuelva como root.
a si lo olvidaba, la funcion devuelve la ruta de forma "./" si el script se encuentra en la raiz, o "../../../" si esta dentro de otras carpetas.