# Filesystem Functions

## Introduction

## Requirements

No external libraries are needed to build this extension, but if you want PHP to support LFS (large files) on Linux, then you need to have a recent glibc and you need compile PHP with the following compiler flags: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64.

## Installation

There is no installation needed to use these functions; they are part of the PHP core.

## Runtime Configuration

The behaviour of these functions is affected by settings in php.ini.

Filesystem and Streams Configuration Options
Name | Default | Changeable | Changelog
--- | --- | --- | ---
allow_url_fopen | "1" | PHP_INI_ALL | PHP_INI_ALL in PHP <= 4.3.4. PHP_INI_SYSTEM in PHP < 6. Available since PHP 4.0.4.
allow_url_include | "0" | PHP_INI_ALL | PHP_INI_SYSTEM in PHP 5. Available since PHP 5.2.0.
user_agent | NULL | PHP_INI_ALL | Available since PHP 4.3.0.
default_socket_timeout | "60" | PHP_INI_ALL | Available since PHP 4.3.0.
from | "" | PHP_INI_ALL |
auto_detect_line_endings | "0" | PHP_INI_ALL | Available since PHP 4.3.0.

Here's a short explanation of the configuration directives.

`allow_url_fopen` boolean

  This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.

  > Note: This setting can only be set in php.ini due to security reasons.

  > Note: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch `--disable-url-fopen-wrapper` .

  Warning

  On Windows versions prior to PHP 4.3.0, the following functions do not support remote file accessing: include(), include_once(), require(), require_once() and the imagecreatefromXXX functions in the Image extension.

`allow_url_include` boolean

  This option allows the use of URL-aware fopen wrappers with the following functions: include(), include_once(), require(), require_once().

  > Note: This setting requires allow_url_fopen to be on.

`user_agent` string

  Define the user agent for PHP to send.

`default_socket_timeout` integer

  Default timeout (in seconds) for socket based streams.

  > Note: This configuration option was introduced in PHP 4.3.0

`from` string

  Define the anonymous ftp password (your email address).

`auto_detect_line_endings` boolean

  When turned on, PHP will examine the data read by fgets() and file() to see if it is using Unix, MS-Dos or Macintosh line-ending conventions.

  This enables PHP to interoperate with Macintosh systems, but defaults to Off, as there is a very small performance penalty when detecting the EOL conventions for the first line, and also because people using carriage-returns as item separators under Unix systems would experience non-backwards-compatible behaviour.

  > Note: This configuration option was introduced in PHP 4.3.0

## Resource Types

## Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

`GLOB_BRACE` (integer)
`GLOB_ONLYDIR` (integer)
`GLOB_MARK` (integer)
`GLOB_NOSORT` (integer)
`GLOB_NOCHECK` (integer)
`GLOB_NOESCAPE` (integer)
`PATHINFO_DIRNAME` (integer)
`PATHINFO_BASENAME` (integer)
`PATHINFO_EXTENSION` (integer)
`PATHINFO_FILENAME` (integer)
  Since PHP 5.2.0.
`FILE_USE_INCLUDE_PATH` (integer)
  Search for `filename` in include_path (since PHP 5).
`FILE_APPEND` (integer)
  Append content to existing file.
`FILE_IGNORE_NEW_LINES` (integer)
  Strip EOL characters (since PHP 5).
`FILE_SKIP_EMPTY_LINES` (integer)
  Skip empty lines (since PHP 5).
`FILE_BINARY` (integer)
  Binary mode (since PHP 6).
`FILE_TEXT` (integer)
  Text mode (since PHP 6).

## See Also

For related functions, see also the Directory and Program Execution sections.

For a list and explanation of the various URL wrappers that can be used as remote files, see also List of Supported Protocols/Wrappers.

## Table of Contents

- basename — Returns filename component of path
- chgrp — Changes file group
- chmod — Changes file mode
- chown — Changes file owner
- clearstatcache — Clears file status cache
- copy — Copies file
- delete — See unlink or unset
- dirname — Returns directory name component of path
- disk_free_space — Returns available space in directory
- disk_total_space — Returns the total size of a directory
- diskfreespace — Alias of disk_free_space
- fclose — Closes an open file pointer
- feof — Tests for end-of-file on a file pointer
- fflush — Flushes the output to a file
- fgetc — Gets character from file pointer
- fgetcsv — Gets line from file pointer and parse for CSV fields
- fgets — Gets line from file pointer
- fgetss — Gets line from file pointer and strip HTML tags
- file_exists — Checks whether a file or directory exists
- file_get_contents — Reads entire file into a string
- file_put_contents — Write a string to a file
- file — Reads entire file into an array
- fileatime — Gets last access time of file
- filectime — Gets inode change time of file
- filegroup — Gets file group
- fileinode — Gets file inode
- filemtime — Gets file modification time
- fileowner — Gets file owner
- fileperms — Gets file permissions
- filesize — Gets file size
- filetype — Gets file type
- flock — Portable advisory file locking
- fnmatch — Match filename against a pattern
- fopen — Opens file or URL
- fpassthru — Output all remaining data on a file pointer
- fputcsv — Format line as CSV and write to file pointer
- fputs — Alias of fwrite
- fread — Binary-safe file read
- fscanf — Parses input from a file according to a format
- fseek — Seeks on a file pointer
- fstat — Gets information about a file using an open file pointer
- ftell — Tells file pointer read/write position
- ftruncate — Truncates a file to a given length
- fwrite — Binary-safe file write
- glob — Find pathnames matching a pattern
- is_dir — Tells whether the filename is a directory
- is_executable — Tells whether the filename is executable
- is_file — Tells whether the filename is a regular file
- is_link — Tells whether the filename is a symbolic link
- is_readable — Tells whether the filename is readable
- is_uploaded_file — Tells whether the file was uploaded via HTTP POST
- is_writable — Tells whether the filename is writable
- is_writeable — Alias of is_writable
- lchgrp — Changes group ownership of symlink
- lchown — Changes user ownership of symlink
- link — Create a hard link
- linkinfo — Gets information about a link
- lstat — Gives information about a file or symbolic link
- mkdir — Makes directory
- move_uploaded_file — Moves an uploaded file to a new location
- parse_ini_file — Parse a configuration file
- pathinfo — Returns information about a file path
- pclose — Closes process file pointer
- popen — Opens process file pointer
- readfile — Outputs a file
- readlink — Returns the target of a symbolic link
- realpath — Returns canonicalized absolute pathname
- rename — Renames a file or directory
- rewind — Rewind the position of a file pointer
- rmdir — Removes directory
- set_file_buffer — Alias of stream_set_write_buffer
- stat — Gives information about a file
- symlink — Creates a symbolic link
- tempnam — Create file with unique file name
- tmpfile — Creates a temporary file
- touch — Sets access and modification time of file
- umask — Changes the current umask
- unlink — Deletes a file