$files->exists() method

Does the given file/link/dir exist?

Thie method accepts an $options argument that can be specified as an array or a string (space or comma separated). The examples here demonstrate usage as a string since it is the simplest for readability.

  • This function may return false for symlinks pointing to non-existing files, unless you specify link as the type.
  • Specifying false for the readable or writable argument disables the option from being used, it doesn’t perform a NOT condition.
  • The writable option may also be written as writeable, if preferred.

Available since version 3.0.180.


// 1. check if exists
$exists = $files->exists('/path/file.ext');

// 2. check if exists and is readable (or writable)
$exists = $files->exists('/path/file.ext', 'readable');
$exists = $files->exists('/path/file.ext', 'writable');

// 3. check if exists and is file, link or dir
$exists = $files->exists('/path/file.ext', 'file');
$exists = $files->exists('/path/file.ext', 'link');
$exists = $files->exists('/path/file.ext', 'dir');

// 4. check if exists and is writable file or dir
$exists = $files->exists('/path/file.ext', 'writable file');
$exists = $files->exists('/path/dir/', 'writable dir');

// 5. check if exists and is readable and writable file
$exists = $files->exists('/path/file.ext', 'readable writable file');


// basic usage
$bool = $files->exists(string $filename);

// usage with all arguments
$bool = $files->exists(string $filename, $options = '');


options (optional)array, string

Can be specified as array or string:

  • type (string): Verify it is of type: 'file', 'link', 'dir' (default='')
  • readable (bool): Verify it is readable? (default=false)
  • writable (bool): Also verify the file is writable? (default=false)
  • writeable (bool): Alias of writable (default=false)
  • When specified as string, you can use any combination of the words: readable, writable, file, link, dir (separated by space or comma).

Return value



Method can throw exceptions on error:

  • WireException - if given invalid or unrecognized $options

$files methods and properties

API reference based on ProcessWire core version 3.0.228

Latest news

  • ProcessWire Weekly #489
    In the 489th issue of ProcessWire Weekly we'll check out what's new in the core this week, share a brand-new recipe of the week, and more. Read on!
    Weekly.pw / 23 September 2023
  • ProcessWire 3.0.226 new main/master version
    After 8 months in development we are excited to bring you ProcessWire 3.0.226 main/master. This version has a ton of great new features, improvements and optimizations, plus more than 100 issue fixes. This post takes an in-depth look at highlights from this great new version.
    Blog / 25 August 2023
  • Subscribe to weekly ProcessWire news

“Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his/her ways of doing things.” —Guy Verville, Spiria Digital Inc.