Php check if file is in path

Php: check if path exists?

This «if» will gets files only : and this «if» will gets directories only: Solution 4: You can also use DirectoryIterator (class) Solution 1: Both would return true on Unix systems — in Unix everything is a file, including directories.

Php: check if path exists?

I am setting a path variable with a query-string.

What is the easiest way to check if the path (always a directory) exists or not.

So now I have like mydomain.com?p=files/folder/sub and everything works fine, i’m reading the contents of the folder. However, I can pass along ?p=shit/whatever and i don’t get a 404 or anything like that. the system reads a folder which does not even exist.

I don’t even need a 404, but just want to print(‘does not exist!’) or anything similar.

What is the best method to do that?

If this is on your local machine you can use file_exists()

Directory — php: check if path exists?, What is the easiest way to check if the path (always a directory) exists or not. if (isset ($_GET [‘p’])) < define (PATH, $_GET ['p']); So now I have …

How to check a path is a file or folder in PHP

I use scandir() to search files recursively. But if the file path directs to a file not a folder, there will be a warning. How can I check the path whether it directs a file or folder?

Have a look into is_dir() and is_file()

is_dir() should tell you if a path is a directory or not.

You can check whether if the variable has file extension or not.

This «if» will gets files only :

if (pathinfo($file, PATHINFO_EXTENSION)) 

and this «if» will gets directories only:

if (!pathinfo($file, PATHINFO_EXTENSION)) 

You can also use DirectoryIterator (class)

$path = 'your path'; $dir = new DirectoryIterator(realpath($path)); foreach ($dir as $fileInfo) < if($fileInfo->isFile()) < // it's a file >> 

Also, you may check is_file and is_dir.

How to check a path is a file or folder in PHP, I use scandir() to search files recursively. But if the file path directs to a file not a folder, there will be a warning. How can I check the path whether it directs a file or folder? enter code

How do I check if a directory exists? «is_dir», «file_exists» or both?

Is using the is_dir function enough for that purpose?

Or should I combine is_dir with file_exists ?

if ( !file_exists( $dir ) && !is_dir( $dir ) )

Both would return true on Unix systems — in Unix everything is a file, including directories. But to test if that name is taken, you should check both. There might be a regular file named ‘foo’, which would prevent you from creating a directory name ‘foo’.

$dirname = $_POST["search"]; $filename = "/folder/" . $dirname . "/"; if (!file_exists($filename)) < mkdir("folder/" . $dirname, 0777); echo "The directory $dirname was successfully created."; exit; >else

I think realpath() may be the best way to validate if a path exist http://www.php.net/realpath

Here is an example function:

 // Path/folder does not exist return false; > 

Short version of the same function

 mkdir($folder); // Continue do stuff 

Second variant in question post is not ok, because, if you already have file with the same name, but it is not a directory, !file_exists($dir) will return false , folder will not be created, so error «failed to open stream: No such file or directory» will be occured. In Windows there is a difference between ‘file’ and ‘folder’ types, so need to use file_exists() and is_dir() at the same time, for ex.:

Php — How do I check if a directory exists? «is_dir», Teams. Q&A for work. Connect and share knowledge within a single location that is structured and easy to search. Learn more about Teams

Get Root Directory Path of a PHP project

I have this folder structure in my PHP project. (this is as shown in eclips)

-MySystem +Code +Data_Access -Public_HTML +css +js +Templates -resources 
echo $_SERVER['DOCUMENT_ROOT'] 

How can I get the path to RootDirectory of the system ( MySystem ), without hardcoding the Folder Name?

For PHP >= 5.3.0 try

Then D: is what you are looking for, isn’t it? In that case you could explode the string by slashes and return the first one:

$pathInPieces = explode('/', $_SERVER['DOCUMENT_ROOT']); echo $pathInPieces[0]; 

This will output the server’s root directory.

Update: When you use the constant DIRECTORY_SEPARATOR instead of the hardcoded slash ( ‘/’ ) this code is also working under Windows.

Update 2: The $_SERVER global variable is not always available. On command line (cli) for example. So you should use __DIR__ instead of $_SERVER[‘DOCUMENT_ROOT’] . __DIR__ returns the path of the php file itself.

Gets the current working directory.

I want to point to the way WordPress handles this:

define( 'ABSPATH', dirname( __FILE__ ) . '/' ); 

As WordPress is very heavy used all over the web and also works fine locally I have much trust in this method. You can find this definition on the bottom of your wordpress wp-config.php file

Get Root Directory Path of a PHP project, dirname (__FILE__) is useful but will get the current path relative to the current file URL you in incase you are in other directory far from root like includes and you need get folder from the root you can use integer parameter 2 will go 1 level up and so on. echo dirname (__FILE__, 2); before. …

Источник

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 )

Источник

Читайте также:  Checkbox in html with label
Оцените статью