Novedades
Música
 
2seater de Young Martino, Young Miko, Juanka (Letra, Música)
Certificada de Leebrian (Letra, Música)
Hundreds (feat. Yovngchimi & Luar la L) (Remix) de Hozwal, De La Ghetto, Arcangel, Yovngchimi, Luar la L (Letra, Música)
Q'Hubo Bebé de Ryan Castro (Letra, Música)
Engañando de Grecia (Letra, Música)
Nubes de Tinna Rey (Letra, Música)
El Plan de Wolfine (Letra, Música)
Chichar de Neutro Shorty (Letra, Música)
Barranquilla Bajo Cero de Beéle, Myke Towers, Feid (Letra, Música)
No Vuelvas de Kany García, Jay Wheeler (Letra, Música)
¿Qué Nos Pasó? de Anuel AA (Letra, Música)
Invierno de Kobi Cantillo (Letra, Música)
Te Empeliculaste de Kevin Roldan, Kalido, HIT$ MUSIC (Letra, Música)
OBSESIONADO de Alejandro Santamaría, Jerry Di (Letra, Música)
Llueve de Wisin & Yandel, Sech, Jhay Cortez (Letra, Música)
Bipolar de Lit Killah, Lil Mosey (Letra, Música)
No Digas Nada de El Chulo, Yoani Star (Letra, Música)
La Prendo de Bad Gyal (Letra, Música)
Sin Autotune (feat. Tonny Boom) (De Regreso) de Gaby Noya, Tonny Boom (Letra, Música)
La Bachata de Manuel Turizo (Letra, Música)
Plan B de Sixto Rein, Omar Acedo (Letra, Música)
Hay Que Vivir El Momento de Manuel Carrasco (Letra, Música)
Flauta de Ir Sais, Farina, Konshens (Letra, Música)
Maléfica de Cazzu, Maria Becerra (Letra, Música)
BEBÉ de Maxiolly (Letra, Música)
Enpiketa de Maiky Moves (Letra, Música)
Bajo Perfil de Kapla y Miky (Letra, Música)
El Amigo de Vakero, Big Trueno (Letra, Música)
Crazy (feat. Arcángel, Lenny Tavárez & Jay Wheeler) de Dímelo Flow, Wisin, Ozuna (Letra, Música)
Eres Mi Luz de Maria Pino (Letra, Música)
Supongo Que Lo Sabes de HA-ASH (Letra, Música)
Calentón de Omy de Oro, Foreign Teck (Letra, Música)
Mi Eterno Amor Secreto de Andry Kiddos (Letra, Música)
La Llevo Al Cielo de Chris Jedi, Chencho Corleone, Anuel AA, Ñengo Flow (Letra, Música)
Que Mueran De Envidia (feat. Giovakartoons) de KEVVO, Giovakartoons (Letra, Música)
Noche de Teteo de Sech (Letra, Música)
Carne y Hueso de TINI (Letra, Música)
Nazareno de Farruko (Letra, Música)
Juguito de Mabel Yeah (Letra, Música)
Pegao de Camilo (Letra, Música)
Sobe Son de Melody (Letra, Música)
La Boda de Jessi Uribe, Paola Jara (Letra, Música)
Jefa de Cazzu (Letra, Música)
Llenar el Vacío de Teree (Letra, Música)
Fettuccine de Akim (Letra, Música)
En La Cama de st. Pedro (Letra, Música)
Vuela Muy Alto de Olga Tañón (Letra, Música)
Ella de Tiare (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...