Bird
Raised Fist0
PHPprogramming~5 mins

File existence and info checks in PHP

Choose your learning style10 modes available
Introduction

We check if a file exists and get information about it to avoid errors and handle files safely.

Before opening a file to read or write, to make sure it is there.
To check if a file is a regular file or a directory before processing.
To get the size of a file before downloading or displaying it.
To verify if a file is readable or writable before performing actions.
To check the last modified time of a file for updates.
Syntax
PHP
<?php

// Check if file exists
file_exists(string $filename): bool;

// Check if path is a file
is_file(string $filename): bool;

// Check if path is a directory
is_dir(string $filename): bool;

// Get file size in bytes
filesize(string $filename): int|false;

// Get last modified time (timestamp)
filemtime(string $filename): int|false;

// Check if file is readable
is_readable(string $filename): bool;

// Check if file is writable
is_writable(string $filename): bool;

?>

All functions return false if the file does not exist or an error occurs.

Use these checks to avoid warnings or errors when working with files.

Examples
Checks if 'example.txt' exists and prints a message.
PHP
<?php
if (file_exists('example.txt')) {
    echo 'File exists';
} else {
    echo 'File does not exist';
}
?>
Checks if the path is a file or directory and prints the result.
PHP
<?php
if (is_file('example.txt')) {
    echo 'It is a file';
} elseif (is_dir('example.txt')) {
    echo 'It is a directory';
} else {
    echo 'Not found';
}
?>
Gets the size of 'example.txt' and prints it if available.
PHP
<?php
$size = filesize('example.txt');
if ($size !== false) {
    echo "File size: $size bytes";
} else {
    echo 'Cannot get file size';
}
?>
Sample Program

This program checks if 'testfile.txt' exists. If yes, it prints details like size, last modified time, and permissions. If not, it says the file does not exist.

PHP
<?php
$filename = 'testfile.txt';

if (file_exists($filename)) {
    echo "$filename exists\n";
    if (is_file($filename)) {
        echo "$filename is a file\n";
        $size = filesize($filename);
        echo "Size: $size bytes\n";
        $modified = filemtime($filename);
        echo "Last modified: " . date('Y-m-d H:i:s', $modified) . "\n";
        echo is_readable($filename) ? "File is readable\n" : "File is not readable\n";
        echo is_writable($filename) ? "File is writable\n" : "File is not writable\n";
    } elseif (is_dir($filename)) {
        echo "$filename is a directory\n";
    } else {
        echo "$filename is neither file nor directory\n";
    }
} else {
    echo "$filename does not exist\n";
}
?>
OutputSuccess
Important Notes

Always check if a file exists before trying to open it to avoid errors.

File size and modification time help manage files efficiently.

Permissions checks (readable/writable) prevent permission errors.

Summary

Use file_exists() to check if a file or directory exists.

Use is_file() and is_dir() to know the type of path.

Use filesize(), filemtime(), is_readable(), and is_writable() to get file info and permissions.

Practice

(1/5)
1. Which PHP function checks if a file or directory exists at a given path?
easy
A. filesize()
B. is_file()
C. file_exists()
D. is_readable()

Solution

  1. Step 1: Understand the purpose of file_exists()

    The function file_exists() returns true if the file or directory exists at the specified path.
  2. Step 2: Compare with other functions

    Functions like is_file() check if the path is a file, filesize() returns size, and is_readable() checks permissions, but none check existence alone.
  3. Final Answer:

    file_exists() -> Option C
  4. Quick Check:

    Check existence = file_exists() [OK]
Hint: Use file_exists() to check any file or directory presence [OK]
Common Mistakes:
  • Confusing is_file() with existence check
  • Using filesize() to check existence
  • Assuming is_readable() means file exists
2. Which of the following is the correct syntax to check if a path is a directory in PHP?
easy
A. is_directory($path);
B. is_dir($path);
C. file_is_dir($path);
D. dir_exists($path);

Solution

  1. Step 1: Recall the correct function name

    PHP uses is_dir() to check if a path is a directory.
  2. Step 2: Verify syntax correctness

    The function is called as is_dir($path); other options are invalid function names.
  3. Final Answer:

    is_dir($path); -> Option B
  4. Quick Check:

    Directory check = is_dir() [OK]
Hint: Remember: is_dir() checks directories, not is_directory() [OK]
Common Mistakes:
  • Using non-existent functions like is_directory()
  • Mixing up is_file() and is_dir()
  • Missing parentheses in function call
3. What will the following PHP code output if the file 'example.txt' exists and is 150 bytes in size?
$file = 'example.txt';
if (file_exists($file)) {
    echo filesize($file);
} else {
    echo 'File not found';
}
medium
A. 150
B. Error
C. 0
D. File not found

Solution

  1. Step 1: Check file existence

    The code uses file_exists() to confirm 'example.txt' exists, which it does.
  2. Step 2: Output file size

    Since the file exists, filesize($file) returns 150, which is printed.
  3. Final Answer:

    150 -> Option A
  4. Quick Check:

    File exists, output size = 150 [OK]
Hint: filesize() returns size only if file_exists() is true [OK]
Common Mistakes:
  • Assuming filesize() works without checking existence
  • Confusing filesize() output with file content
  • Expecting 'File not found' when file exists
4. Identify the error in this PHP code snippet that checks if a file is writable:
$filename = 'data.txt';
if (is_writeable($filename)) {
    echo 'Writable';
} else {
    echo 'Not writable';
}
medium
A. Missing semicolon after echo statements
B. is_writeable() does not check permissions
C. $filename should be in double quotes
D. The function name is misspelled; should be is_writable()

Solution

  1. Step 1: Check function spelling

    The correct function to check if a file is writable is is_writable(), not is_writeable().
  2. Step 2: Verify other syntax

    Semicolons are present, variable quotes are valid, and is_writable() does check permissions.
  3. Final Answer:

    The function name is misspelled; should be is_writable() -> Option D
  4. Quick Check:

    Correct spelling = is_writable() [OK]
Hint: Remember: writable has one 'e' after writ [OK]
Common Mistakes:
  • Misspelling is_writable() as is_writeable()
  • Thinking variable needs double quotes
  • Confusing permission check with existence
5. You want to list all files in a directory 'docs/' that exist, are readable, and have been modified in the last 24 hours. Which PHP code snippet correctly implements this?
hard
A. $files = scandir('docs/'); foreach ($files as $file) { $path = 'docs/' . $file; if (file_exists($path) && is_readable($path) && (time() - filemtime($path) < 86400)) { echo $file . "\n"; } }
B. $files = scandir('docs/'); foreach ($files as $file) { if (is_dir($file)) continue; if (is_writable($file)) { echo $file . "\n"; } }
C. $files = scandir('docs/'); foreach ($files as $file) { if (file_exists($file) && filesize($file) > 0) { echo $file . "\n"; } }
D. $files = scandir('docs/'); foreach ($files as $file) { if (is_file($file) && is_readable($file)) { echo $file . "\n"; } }

Solution

  1. Step 1: Understand requirements

    We need to list files in 'docs/' that exist, are readable, and modified within last 24 hours (86400 seconds).
  2. Step 2: Analyze each option

    $files = scandir('docs/'); foreach ($files as $file) { $path = 'docs/' . $file; if (file_exists($path) && is_readable($path) && (time() - filemtime($path) < 86400)) { echo $file . "\n"; } } correctly scans 'docs/', builds full path, checks file_exists(), is_readable(), and filemtime() against current time minus 86400 seconds. Other options miss one or more conditions or use wrong paths.
  3. Final Answer:

    Option A code snippet -> Option A
  4. Quick Check:

    Check existence + readability + recent mod = $files = scandir('docs/'); foreach ($files as $file) { $path = 'docs/' . $file; if (file_exists($path) && is_readable($path) && (time() - filemtime($path) < 86400)) { echo $file . "\n"; } } [OK]
Hint: Combine file_exists(), is_readable(), and filemtime() with full path [OK]
Common Mistakes:
  • Not using full path when checking files
  • Ignoring file modification time condition
  • Checking is_writable() instead of is_readable()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard