php - una - ¿Cómo obtener la ruta absoluta a la carpeta public_html?
saber directorio servidor php (9)
¿Dónde está el archivo que estás ejecutando? Si está en su carpeta html pública, puede hacer echo dirname(__FILE__);
$_SERVER[''DOCUMENT_ROOT'']
devoluciones
/usr/local/apache/htdocs/
hay una manera de conseguir
/home/user/public_html/
El problema es que tengo que escribir un script que puede estar en la carpeta public_html o en una subcarpeta de la carpeta public_html. El script debe guardar los archivos cargados en una carpeta dentro del directorio public_html (por ejemplo, imágenes). En otras palabras, digamos que mi archivo es test.php y que la ruta es
/home/user/public_html/test/test.php.
Y hay una carpeta
/home/user/public_html/images
donde los archivos cargados a través de test.php tienen que ser guardados. No sé dónde se ejecutará el archivo test.php. Por ejemplo puede estar en el camino.
/home/user/public_html/test/another-dir/test.php
¿Cómo obtengo la ruta a la carpeta de imágenes sin saber dónde estará el archivo test.php?
Asumamos que show_images.php
está en images
carpeta y que la raíz del sitio es public_html
, por lo que:
echo dirname(__DIR__); // prints ''/home/public_html/''
echo dirname(__FILE__); // prints ''/home/public_html/images''
Con la función preg_replace para encontrar una ruta absoluta desde __FILE__
usted puede encontrar fácilmente con cualquier usuario local. Aquí corto mi código:
$ path_image_you_want = preg_replace (''# / public_html /([^/◆+?)/.*#'', ''/ public_html / $ 1 / images ",
__FILE__
);
Cuando quiera cualquier tipo de información de configuración, puede usar phpinfo()
.
Esto es super viejo, pero lo encontré y esto funcionó para mí.
<?php
//Get absolute path
$path = getcwd();
//strip the path at your root dir name and everything that follows it
$path = substr($path, 0, strpos($path, "root"));
echo "This Is Your Absolute Path: ";
echo $path; //This will output /home/public_html/
?>
Por curiosidad, ¿por qué no usas la url para dicha carpeta?
Suponiendo que la carpeta nunca cambie de ubicación, esa sería la forma más fácil de hacerlo.
También puedes usar dirname en dirname para llegar a donde quieres estar.
Ejemplo de uso:
Para Joomla, los módulos siempre se instalarán en /public_html/modules/mod_modulename/
Entonces, desde dentro de un archivo dentro de la carpeta del módulo, para llegar a la raíz de instalación de Joomla en cualquier servidor, podría usar: $path = dirname(dirname(dirname(__FILE__)));
Lo mismo ocurre con Wordpress, donde los complementos están siempre en wp-content/plugins/
Espero que esto ayude a alguien.
algo que encontré hoy, después de leer esta pregunta y continuar con mi googlesurf:
https://docs.joomla.org/How_to_find_your_absolute_path
<?php
$path = getcwd();
echo "This Is Your Absolute Path: ";
echo $path;
?>
funciona para mi
ponga cualquier archivo en los directorios que quería encontrar, en este caso, coloque ''root'' en public_html
/home/user/public_html/root <- note that ''root'' is not a folder (you can use root.txt if u want)
Y usa esta función.
function findThis($get){
$d = '''';
for($i = 0; $i < 20; $i++){//this will try 20 times recursively on upper folder
if(file_exists($d.$get)){
return $d;
}else{
$d.="../";
}
}
}
y obtén el valor llamándolo
$pathToRoot = findThis(''root'');
Y volverá, por ejemplo el directorio del script php es
/home/user/public_html/test/another-dir/test.php
por lo que el $ pathToRoot será
$pathToRoot => "../../../"
¿Es este el que quieres?