Novedades
Música
 
Kevin Roldán regresa a los escenarios en USA
Te Pienso de Ozuna (Letra, Música)
La Torta de Farina (Letra, Música)
VELOZzzz de Ingratax (Letra, Música)
Mía Mía de Kenia Os (Letra, Música)
Bebí Demasiao de Javiielo, Jay Wheeler, Brytiago (Letra, Música)
Estabilidad de Keityn (Letra, Música)
Pica de J Alvarez, Kerr Yen (Letra, Música)
LOKITA de Natti Natasha, Maria Becerra (Letra, Música)
La 2blea de Anuel AA (Letra, Música)
Que Por Qué de Jessy Castillo (Letra, Música)
Ni Borracha de Dayanara (Letra, Música)
Sunday Funday de Sharlene (Letra, Música)
Me Traicioné de Gaby Noya, Sheryl Rubio (Letra, Música)
Tan Raro de Tres Dedos (Letra, Música)
Me Tienta de Agus Padilla, Estani (Letra, Música)
AL NATURAL de Bad Milk (Letra, Música)
No Nos Vamos de Juan Magan (Letra, Música)
Puxa de Pablo Feliú (Letra, Música)
Ferrari de Nacho, CNCO (Letra, Música)
CALENTÓN de Mora (Letra, Música)
SALVAJE de Lyanno, Young Miko (Letra, Música)
Corazón Roto de Brray (Letra, Música)
Besos Moja2 de Wisin & Yandel, ROSALÍA (Letra, Música)
Nazareno (Remix) de Farruko, Ankhal (Letra, Música)
Junio de Maluma (Letra, Música)
BEBE de Danny Ocean (Letra, Música)
7D de Noriel (Letra, Música)
Intro (La Luz) de Christina Aguilera (Letra, Música)
No Es Que Te Extrañe de Christina Aguilera (Letra, Música)
KE NIVEL de Aran One, La Melodia Perfecta (Letra, Música)
Casas de Papel de Cáthia (Letra, Música)
Chimbo de Big Soto, Danny Ocean (Letra, Música)
BRUJULA de Ankhal (Letra, Música)
ME MATA de Omar K11 (Letra, Música)
Caracas ¿Tú No Querías? de Sixto Rein, Mackie (Letra, Música)
Si Es Cierto Que Te Vas de Carin León (Letra, Música)
Buscando un Amor de FMK (Letra, Música)
Otro Amigo Que Se Va de JC La Nevula (Letra, Música)
Pelikulón de Victor Drija (Letra, Música)
Yoga de Susana Cala (Letra, Música)
Perreo Exotico de Jliany (Letra, Música)
Digan Lo Que Digan de Carlos Rivera (Letra, Música)
No Se Me Ve Tan Mal (NSMVTM) de Ventino (Letra, Música)
Después de las 12 (Remix) de Ovi, Kim Loaiza, Pailita, Grupo Firme (Letra, Música)
BeSos aL vIEnTo :( de Ramon Vega (Letra, Música)
Malvada de Miguel Guerrero, Skinny, Reies (Letra, Música)
PUNTO 40 de Rauw Alejandro, Baby Rasta (Letra, Música)
Biografías
 
Leng. De Program.
 
Listas De Páginas
 
Lo+ Visto
Lenguajes De Programación
  1. Enorable
  2. Lenguajes De Programación
  3. Php
10
 
22/02/2022 |  vistas:

Función PHP para acceder al directorio o ruta no pública de los documentos HTML

Función PHP para acceder al directorio o ruta no pública de los documentos HTMLEn este recurso creado en PHP lo que se consigue es acceder o mostrar el directorio o ruta no pública de nuestro sitio web como por ejemplo: '/home/account/' ó '/var/www/'.

Luego de pasar algún rato buscando algún recurso que permitiera de alguna manera leer y acceder al directorio o ruta anteriormente más alta de los documentos HTML ("public_html" ó "html"), y luego de no de tener éxito en el cometido, decidí que era el momento de crear mi propia función de usuario para que resolviera mi problema.

Como muchos sabrán, en PHP existen diversas maneras para acceder a la raíz de nuestros documentos públicos de un sitio web, entre esas opciones nos encontramos con el array $_SERVER, que «contiene información, tales como cabeceras, rutas y ubicaciones de script».

Veamos algunos resultados que no me ayudaron a resolver mi problema.

Con $_SERVER['DOCUMENT_ROOT'] es probable que obtenga un resultado como este: '/var/www/html/' ó '/var/www/html/example.com/'. Mientras que con __DIR__ y __FILE__ puede obtener algo parecido; con dirname( $_SERVER['DOCUMENT_ROOT'] ), dirname( __DIR__ ) ó dirname( __FILE__ ) tampoco nos resultaría lo suficiente para lograr el objetivo, que es acceder a la ruta '/var/www/' ó '/var/', o en su defecto a la ruta '/home/account/'.

Así que para ello he tenido que escribir algo rápido de código para acceder a esa ruta, pero veamos como es la función.

NOTA: esta función solo ha sido probada en ambiente Linux.

function get_docroot_no_public_html( $docroot = '', $level = 2 ) {
$root = '';
$docroot = ( !isset( $docroot ) || empty( $docroot ) || !preg_match( '/[^\s]+$/', $docroot ) )
? $_SERVER['DOCUMENT_ROOT']
: $docroot;
$r = explode( '/', $docroot );
if( is_array( $r ) ) {
for( $i=0; $i <= $level; $i++ ){
if( isset( $r[$i] ) && !empty( $r[$i] ) ) {
$root .= $r[$i]."/";
}
}
}
return '/'.$root;
}

Como se puede observar, la función permite recibir dos argumentos o parámetros que son: $docroot y $level, los cuales especifican si así lo desea, pasar una cadena con delimitadores de barra invertida ("/") para el primer argumento y un valor de número entero para el segundo argumento. Por defecto, si $docroot no está definido o está vacío se asigna $_SERVER['DOCUMENT_ROOT'] y el valor de $level se inicializa en 2.

Usando explode() se consigue armar un array que será leído para poder armar lo que será nuestra ruta deseada, que sería algo como '/home/account/' ó '/var/www/'.

Probando la función.

Para probar esta función podemos realizar los siguiente:

echo get_docroot_no_public_html();
echo "<br>";
echo get_docroot_no_public_html("");
echo "<br>";
echo get_docroot_no_public_html(" ");
echo "<br>";
echo get_docroot_no_public_html( $_SERVER['DOCUMENT_ROOT'], 3 );
echo "<br>";
echo get_docroot_no_public_html( __DIR__, 1 );
echo "<br>";
echo get_docroot_no_public_html( __FILE__, 2 );
echo "<br>";
echo get_docroot_no_public_html( dirname( $_SERVER['DOCUMENT_ROOT'] ) );
echo "<br>";
echo get_docroot_no_public_html( dirname( __DIR__ ) );
echo "<br>";
echo get_docroot_no_public_html( dirname( __FILE__ ) );

La impresión de cada línea de código resultaría en:
/var/www/
/var/www/
/var/www/
/var/www/html/
/var/
/var/www/
/var/www/
/var/www/
/var/www/

Como se puede apreciar hay diversas maneras de acceder a rutas no públicas y públicas de nuestro servidor web, dependiendo de los valores que se pasen como argumentos.

Espero que esta función les sirva tanto como a mí, que la puedan mejorar y mantener dentro de sus recursos de utilidades para PHP.
Consulta Lo+ Top de Lenguajes De Programación
Todos los titulares en un solo lugar...