0

Hello,

im having a problem with php's file_exists and is_file, it seems to be passing if a file was not specified, i looked into the official php documentation to find file_exist and is_file can also check i directory exists but i dont want this i just want to check if the file exists, any ideas?

<?php
if (file_exists($filepath) == true){
 die('File exists');
} else {
 die('File doesn't exist');
?>

Best Wishes,
Nathaniel Blackburn

Edited by nblackburn: n/a

5
Contributors
14
Replies
15
Views
6 Years
Discussion Span
Last Post by nblackburn
0
if (file_exists($filepath)){
 die('File exists');
} else {
 die('File doesn\'t exist');
}
?>

Edited by diafol: n/a

0
if (file_exists($filepath)){
 die('File exists');
} else {
 die('File doesn\'t exist');
}
?>

Isn't that kind of what i have already done?

0

'File doesn\'t exist'

you need to backslash the apostrophe.

have you tried it?

Edited by diafol: n/a

0

'File doesn\'t exist'

you need to backslash the apostrophe.

This was just a example, to show i was capable of writing this code. The actual code is well over 400 lines. I am led to belive this is required before i can be helped.

0

Perhaps if you posted the actual code that's giving you grief - JUST the relevant bits, not the full 400 lines.

It's impossible to guess why your code isn't working.

0
if(file_exists($filepath)) {
die('File exists');
} else {
die('File doesn\'t exist');
}

This may be better format comparing the return value as boolean (true). The '$filepath' might be the absolute or relative path including file name and extension.

What's the problem you're facing ? What do you mean that function does not work correctly ? Any error you get, then, post the error message.

0

If there are no mistakes at the way you have written the only possible reason is to get wrong file location.
Try to echo $filepath , exactly above the code you have written. And check if its the correct location of this file.

0
if(file_exists($filepath)) {
die('File exists');
} else {
die('File doesn\'t exist');
}

This may be better format comparing the return value as boolean (true). The '$filepath' might be the absolute or relative path including file name and extension.

What's the problem you're facing ? What do you mean that function does not work correctly ? Any error you get, then, post the error message.

Basically the problem is both file_exists and is_file are returning TRUE when a file hasn't been specified but a directory has.

0

I have disassembled the code to see whats happening and i think i see. If a file has not been specified it returns the last directory in the filepath.

Basically if the file has NOT been specified or doesn't exist i want it to return false, not the last directory in the path. How could i do this as its driving me mad.

Thanks,
Nathaniel Blackburn

0

Just make a check with
is_dir($file) it will retunr TRUE if its folder and false if its file

0

put some more echos in your code, echo out your filename just before you are looking for it, is the path correct? in your 'file_exists' code take it one step further...
and why not use the is_dir() function

//$filename = 'test2.php';   this was a file,
$filename = 'cabron';   this was a directory.

if (file_exists($filename)) {
	echo "$filename EXISTS<br>";	
	if (is_file($filename)) {
		// then the file exists and it is a file
		echo "$filename is a file<br>";
		// you may want to exit and do nothing.				
	} else if (is_dir($filename)) {
		// the file exists and is a directory, not a file...
		// is this expected behavior, if so fine... do nothing
		echo "$filename is a directory<br>";		
	} else {
	    // the filename exists, this code cannot currently be reached, because is_file or is_dir should be true.  fatal error.  die.
		// you could drop the else if is_dir code above , and depending on the is_file() call... this would be the else
		// meaning that the filename exists and it is 'not' a file, then the filename in question would have to be a directory.				
	}	
} else {
	echo "$filename DOES NOT EXIST<br>";
}
0

Managed to solve this myself, thanks for the help guys...

<?php
if (is_dir($filepath) == true){
  die('No filename was specified for this download.');
}
?>
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.