- file_exists
- Return Values
- Errors/Exceptions
- Examples
- Notes
- See Also
- User Contributed Notes 31 notes
- PHP: Create directory if it doesn’t exist.
- Create a Folder if It Doesn’t Exist in PHP
- file_exists() to Check if a File or Directory Exists in PHP
- is_dir() to Check if a File or Directory Exists in PHP
- file_exists() vs is_dir() in PHP
- mkdir() in PHP
- Related Article — PHP Directory
- PHP Create Directory If It Doesn’t Exist Tutorial
- You might also like.
file_exists
On windows, use //computername/share/filename or \\computername\share\filename to check files on network shares.
Return Values
Returns true if the file or directory specified by filename exists; false otherwise.
Note:
This function will return false for symlinks pointing to non-existing files.
Note:
The check is done using the real UID/GID instead of the effective one.
Note: Because PHP’s integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.
Errors/Exceptions
Upon failure, an E_WARNING is emitted.
Examples
Example #1 Testing whether a file exists
if ( file_exists ( $filename )) echo «The file $filename exists» ;
> else echo «The file $filename does not exist» ;
>
?>
Notes
Note: The results of this function are cached. See clearstatcache() for more details.
As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.
See Also
- is_readable() — Tells whether a file exists and is readable
- is_writable() — Tells whether the filename is writable
- is_file() — Tells whether the filename is a regular file
- file() — Reads entire file into an array
- SplFileInfo
User Contributed Notes 31 notes
Note: The results of this function are cached. See clearstatcache() for more details.
That’s a pretty big note. Don’t forget this one, since it can make your file_exists() behave unexpectedly — probably at production time 😉
Note that realpath() will return false if the file doesn’t exist. So if you’re going to absolutize the path and resolve symlinks anyway, you can just check the return value from realpath() instead of calling file_exists() first
I needed to measure performance for a project, so I did a simple test with one million file_exists() and is_file() checks. In one scenario, only seven of the files existed. In the second, all files existed. is_file() needed 3.0 for scenario one and 3.3 seconds for scenario two. file_exists() needed 2.8 and 2.9 seconds, respectively. The absolute numbers are off course system-dependant, but it clearly indicates that file_exists() is faster.
file_exists() does NOT search the php include_path for your file, so don’t use it before trying to include or require.
Yes, include does return false when the file can’t be found, but it does also generate a warning. That’s why you need the @. Don’t try to get around the warning issue by using file_exists(). That will leave you scratching your head until you figure out or stumble across the fact that file_exists() DOESN’T SEARCH THE PHP INCLUDE_PATH.
file_exists() is vulnerable to race conditions and clearstatcache() is not adequate to avoid it.
The following function is a good solution:
function file_exists_safe ( $file ) if (! $fd = fopen ( $file , ‘xb’ )) return true ; // the file already exists
>
fclose ( $fd ); // the file is now created, we don’t need the file handler
return false ;
>
?>
The function will create a file if non-existent, following calls will fail because the file exists (in effect being a lock).
IMPORTANT: The file will remain on the disk if it was successfully created and you must clean up after you, f.ex. remove it or overwrite it. This step is purposely omitted from the function as to let scripts do calculations all the while being sure the file won’t be «seized» by another process.
NOTE: This method fails if the above function is not used for checking in all other scripts/processes as it doesn’t actually lock the file.
FIX: You could flock() the file to prevent that (although all other scripts similarly must check it with flock() then, see https://www.php.net/manual/en/function.flock.php). Be sure to unlock and fclose() the file AFTER you’re done with it, and not within the above function:
function create_and_lock ( $file ) if (! $fd = fopen ( $file , ‘xb’ )) return false ;
>
if (! flock ( $fd , LOCK_EX | LOCK_NB )) < // may fail for other reasons, LOCK_NB will prevent blocking
fclose ( $fd );
unlink ( $file ); // clean up
return false ;
>
return $fd ;
>
if ( $lock = create_and_lock ( «foo.txt» )) // do stuff
flock ( $fd , LOCK_UN ); // unlock
fclose ( $fd ); // close
>
?>
SEE ALSO: https://linux.die.net/man/2/open about O_CREAT|O_EXCL (which is used with the ‘x’ modifier for fopen()) and problems with NFS
In response to seejohnrun’s version to check if a URL exists. Even if the file doesn’t exist you’re still going to get 404 headers. You can still use get_headers if you don’t have the option of using CURL..
$file = ‘http://www.domain.com/somefile.jpg’;
$file_headers = @get_headers($file);
if($file_headers[0] == ‘HTTP/1.1 404 Not Found’) $exists = false;
>
else $exists = true;
>
I was having problems with the file_exists when using urls, so I made this function:
function file_exists_2 ( $filePath )
return ( $ch = curl_init ( $filePath )) ? @ curl_close ( $ch ) || true : false ;
>
?>
Cheers!
If you are trying to access a Windows Network Share you have to configure your WebServer with enough permissions for example:
You will get an error telling you that the pathname doesnt exist this will be because Apache or IIS run as LocalSystem so you will have to enter to Services and configure Apache on «Open a session as» Create a new user that has enough permissions and also be sure that target share has the proper permissions.
Hope this save some hours of research to anyone.
With PHP 7.0 on Ubuntu 17.04 and with the option allow_url_fopen=On, file_exists() returns always false when trying to check a remote file via HTTP.
returns always «missing», even for an existing URL.
I found that in the same situation the file() function can read the remote file, so I changed my routine in
This is clearly a bit slower, especially if the remote file is big, but it solves this little problem.
here a function to check if a certain URL exist:
function url_exists ( $url ) $a_url = parse_url ( $url );
if (!isset( $a_url [ ‘port’ ])) $a_url [ ‘port’ ] = 80 ;
$errno = 0 ;
$errstr = » ;
$timeout = 30 ;
if(isset( $a_url [ ‘host’ ]) && $a_url [ ‘host’ ]!= gethostbyname ( $a_url [ ‘host’ ])) $fid = fsockopen ( $a_url [ ‘host’ ], $a_url [ ‘port’ ], $errno , $errstr , $timeout );
if (! $fid ) return false ;
$page = isset( $a_url [ ‘path’ ]) ? $a_url [ ‘path’ ]: » ;
$page .= isset( $a_url [ ‘query’ ])? ‘?’ . $a_url [ ‘query’ ]: » ;
fputs ( $fid , ‘HEAD ‘ . $page . ‘ HTTP/1.0’ . «\r\n» . ‘Host: ‘ . $a_url [ ‘host’ ]. «\r\n\r\n» );
$head = fread ( $fid , 4096 );
fclose ( $fid );
return preg_match ( ‘#^HTTP/.*\s+[200|302]+\s#i’ , $head );
> else return false ;
>
>
?>
in my CMS, I am using it with those lines:
if(!isset( $this -> f_exist [ $image ][ ‘exist’ ]))
if( strtolower ( substr ( $fimage , 0 , 4 )) == ‘http’ || strtolower ( substr ( $fimage , 0 , 4 )) == ‘www.’ ) if( strtolower ( substr ( $image , 0 , 4 )) == ‘www.’ ) $fimage = ‘http://’ . $fimage ;
$image = ‘http://’ . $image ;
>
$this -> f_exist [ $image ][ ‘exist’ ] = $this -> url_exists ( $fimage ); //for now
> else $this -> f_exist [ $image ][ ‘exist’ ] = ( $fimage != » && file_exists ( $fimage ) && is_file ( $fimage ) && is_readable ( $fimage ) && filesize ( $fimage )> 0 );
>
>
?>
I wrote this little handy function to check if an image exists in a directory, and if so, return a filename which doesnt exists e.g. if you try ‘flower.jpg’ and it exists, then it tries ‘flower[1].jpg’ and if that one exists it tries ‘flower[2].jpg’ and so on. It works fine at my place. Ofcourse you can use it also for other filetypes than images.
function imageExists ( $image , $dir )
PHP: Create directory if it doesn’t exist.
This is a quick PHP tutorial on how to create a folder or directory if it doesn’t already exist. In certain use cases, you may have to use PHP to dynamically create folders on the fly (this is often the case when dealing with user uploads).
The first example is pretty easy. In this scenario, we want to create a folder called “images”:
An explanation of the PHP code snippet above:
- We set the name of the directory that we want to create. In this case, it is “images”.
- We used PHP’s is_dir function to check if the folder already exists. If the is_dir function returns a boolean FALSE value, then we know that the directory in question doesn’t already exist.
- If the directory doesn’t already exist, we can create it using the mkdir function.
Note that if you fail to check for the directory’s existence, you run the risk of getting a nasty PHP warning:
Warning: mkdir(): File exists in path/to/file.php on line 9
You can also create multiple sub-folders at the same time:
//The name of the directory that we need to create. $directoryName = './images/users/uploads/'; //Check if the directory already exists. if(!is_dir($directoryName))< //Directory does not exist, so lets create it. mkdir($directoryName, 0755, true); >
- We set the directory name to “./images/users/uploads/”.
- We set the third parameter on mkdir to TRUE. The third parameter for mkdir is “Recursive: Allows the creation of nested directories specified in the pathname.”
If the “users” and “uploads” sub-directories do not exist, then mkdir will automatically create them.
Create a Folder if It Doesn’t Exist in PHP
- file_exists() to Check if a File or Directory Exists in PHP
- is_dir() to Check if a File or Directory Exists in PHP
- file_exists() vs is_dir() in PHP
- mkdir() in PHP
It is possible to create a folder and set the proper permission using PHP, specifically using mkdir() function.
The default permission mode is 0777 (widest possible access). Before creating a directory, it’s importing to check first if the directory or a file exists or not. In PHP, it can be done using file_exists or is_dir .
file_exists() to Check if a File or Directory Exists in PHP
The file_exists function is a built-in function to check where a directory or a file exists or not. It accepts a parameter of a path which returns true if it already exists or false if not.
Example using file_exists() :
$path = "sample/path/newfolder"; if (!file_exists($path)) mkdir($path, 0777, true); >
In the above example, it checks the existence of the directory using file_exists() function, then creates the newfolder directory if the result is false, with the permission of 0777 .
is_dir() to Check if a File or Directory Exists in PHP
This function is also similar to file_exists , and the only difference is that it will only return true if the passed string is a directory and it will return false if it’s a file.
$path = "sample/path/newfolder"; if (!is_dir($path)) mkdir($path, 0777, true); >
In the above example, is_dir checks whether the folder already exists before creating a new folder using mkdir .
file_exists() vs is_dir() in PHP
Both functions check the existence of the directory, the only difference is file_exists() also return true if the passed parameter is a file. On the other hand, is_dir is a bit faster than file_exists .
mkdir() in PHP
This function creates a directory that is specified by pathname which is passed as a parameter. The expected return value is true or false .
mkdir($path, $mode, $recursive, $context);
Note: PHP checks if the operating script in the directory has the same UID(owner) in the directory when safe mode is enabled.
Related Article — PHP Directory
PHP Create Directory If It Doesn’t Exist Tutorial
Today,I will learn you how to create directory if it doesn’t exist useing php. we will show example of php create directory if it doesn’t exist. you can understand a concept of php create directory if not exists. we will help you to give example of php code to create directory if not exists. This article goes in detailed on create directory if not exist php. So, let’s follow few step to create example of php make directory if not exist.
I need to create directory from php code. for example if you are storing images on folder wire then you don’t have to go on server and create you must have to write code to create dynamically folder using php code.
Here In this example, we will use is_dir() and mkdir() to create directory if does not exist. is_dir() will help to check if folder is exit or not and mkdir() will help to create new folder.
$directoryName = ‘images’;
/* Check if the directory already exists. */
if(!is_dir($directoryName)) <
/* Directory does not exist, so lets create it. */
mkdir($directoryName, 0755);
>
?>
In thi step,we need to create nested directories specified in the pathname. so in this example, i will give you how you can do it in php.
mkdir() function has third argument that allow to creating nested folder. you have to pass TRUE.
$directoryName = ‘images/1/thumb’;
/* Check if the directory already exists. */
if(!is_dir($directoryName)) <
/* Directory does not exist, so lets create it. */
mkdir($directoryName, 0755, true);
>
?>
✌️ Like this article? Follow me on Twitter and Facebook. You can also subscribe to RSS Feed.