> Manuales > Gestión de archivos en PHP

Script PHP para comprobar si existe un archivo determinado en el servidor e informar sobre su existencia o no.

Vamos a ver cómo se puede comprobar mediante PHP si un fichero existe o no en el sistema de archivos del servidor, es decir, dentro del disco duro del servidor. Esta es una tarea que se debería comprobar antes de realizar acciones con cualquier fichero del servidor, porque, si no existe el fichero, las acciones a realizar sobre él no tendrían sentido.

En PHP existe una función que nos ayudará con la tarea de comprobar si existe o no un fichero en el servidor. Nosotros solamente tenemos que hacer uso de ella para saber si existe ese archivo y por tanto, podemos operar con él.

file_exists(nombre_del_fichero)

La función devuelve un boleano, indicando con true que existe el fichero y con false que no existe. Recibe una cadena de caracteres que es el nombre del fichero que se desea comprobar.

En principio, si sólo se indica un nombre de un fichero, se supone que se debe buscar su existencia dentro del mismo directorio donde se aloja la página PHP.

Ejemplos

Vamos a ver si existe un archivo llamado "mifichero.txt" en el mismo directorio que la página PHP:

if (file_exists("mifichero.txt")){
   echo "El fichero existe";
}else{
   echo "El fichero no existe";
}

Si quisiéramos comprobar si existe ese fichero dentro de un directorio determinado, bastaría con que escribiésemos la ruta de directorios sobre la que deseamos buscar el fichero.

file_exists("datos/mifichero.txt")

Esta función buscaría el archivo "mifichero.txt" dentro del subdirectorio "datos". Este subdirectorio "datos" estaría contenido dentro del directorio donde colocamos el script PHP.

Indicando rutas absolutas

También podríamos buscar un archivo indicando una ruta absoluta dentro del sistema de archivos del servidor. En este caso habría que comprobar si desde PHP tenemos permisos para acceder a la ruta en la que se pretende buscar el archivo, sobretodo si la ruta es externa al directorio de publicación del servidor.

file_exists("c:/mif.txt")

Esta función buscaría el archivo mif.txt en el directorio raíz del disco c:. Habría que ver si tenemos permisos para acceder al directorio raíz del disco.

Podemos averiguar la ruta del directorio de publicación de la página con la variable del entorno del servidor $_SERVER["DOCUMENT_ROOT"]. Podemos utilizar esta variable para generar la ruta absoluta a un archivo que pretendamos comprobar su existencia.

file_exists($_SERVER["DOCUMENT_ROOT"] . "\mifichero.txt")

Esta función buscaría el archivo "mifichero.txt" dentro de la raíz del directorio de publicación.

Nota:Como se puede ver, hemos utilizado el carácter "\" (contrabarra) para separar los directorios en la ruta de un archivo. Esto es porque estas líneas están extraídas de ejemplos de PHP realizados sobre el sistema Windows. En Windows se utilizan contrabarras para escribir rutas, mientras que en Linux se utiliza el carácter "/" (barra normal). Hay que tener cuidado para saber qué barra debemos utilizar en cada sistema, de lo contrario, podemos equivocarnos y entonces PHP puede tener problemas para localizar un fichero determinado.

Ejemplo: si existe un fichero, abrirlo y si no existe, crearlo

Ahora vamos a mostrar un código muy típico que sirve para abrir un fichero con un nombre dado. Primero habría que comprobar si existe o no existe ese fichero. Si existe, entonces lo abrimos tal cual está y si no existe, lo crearemos previamente a abrirlo.

if (file_exists("mifichero.txt")){
   echo "El fichero existe. Lo abro";
   $reffichero = fopen("mifichero.txt", "a");
}else{
   echo "El fichero no existe. Lo creo y abro.";
   $reffichero = fopen("mifichero.txt", "w+");
}

En este código, primero se comprueba la existencia del fichero. Si existe (caso afirmativo del if), se abre con el modo "a", que indica que se desea añadir información al fichero. Si no existe fichero (caso else del if), se abre con el modo "w+", que indica lectura y escritura y además indica que si no existe el fichero, se creará en el sistema de archivos en la ruta indicada.

Después de este código, el fichero está abierto para escritura, con lo cual, podemos operar sobre el fichero (escribiendo información) y luego deberíamos cerrarlo. El código sería como este:

//operar con el fichero
fwrite ($reffichero,"nuevo texto!!!!");
//cerrar el fichero
fclose ($reffichero);

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual