Si, después he observado tu función. Para pasarle la ruta usando $_SERVER['SCRIPT_FILENAME'] y dirname tienes q considerar esto:
En primer lugar script_filename te da el path completo hacia el script q lo contiene, por eso deberías de poner ese archivo en la carpeta donde tienes tus archivos a mostrar, por q segun tengo entendido, en la DB solo guardas el nombre del archivo... me sigues?
Ejemplo:
Código HTML:
http://www.misitio.com.ar/mis_archivos/ En esta carpeta estan tus archivos
Código PHP:
http://www.misitio.com.ar/mis_archivos/path.php
en path.php es en donde debes de poner
$url = $_SERVER['SCRIPT_FILENAME'];
Esto te daría algo como
/www/public_html/misitio/mis_archivos/path.php
con dirname le quitamos el /path.php
$path = dirname($url);
Esto te daría algo como
/www/public_html/misitio/mis_archivos
A este path es al q debes de agregarle la barra y el nombre de archivo
Código PHP:
<a href="<?=$path.'/'.$row['nombre_de_tu_archivo']?>">
Ahora como incluyes esto en tu template, pues podrías hacer include asi path.php y modificar tu función para agregarle otro parámetro, $path.
Saludos cuidate