28

I'm using fopen to read from a file

$fh = fopen($path, 'r') or die('Could not open file');

Now I contantly get error Could not open file. I checked the file path and even changed the permissions of the file to 777. Is there a way I can get a detailed error report as why the file can't be opened similar to mysql_error()?

Adexe Rivera
  • 414
  • 7
  • 12
Elitmiar
  • 35,072
  • 73
  • 180
  • 229

4 Answers4

42

Turn on error reporting, or, in a production environment (from PHP 5.2.0 onwards) you should also be able to use error_get_last().

Seth Carnegie
  • 73,875
  • 22
  • 181
  • 249
Pekka
  • 442,112
  • 142
  • 972
  • 1,088
15

For php versions prior to 5.2 (lacking error_get_last()) you can use track_errors.

ini_set('track_errors', 1);
$fh = fopen('lalala', 'r');
if ( !$fh ) {
  echo 'fopen failed. reason: ', $php_errormsg;
}

see also: http://de.php.net/reserved.variables.phperrormsg

VolkerK
  • 95,432
  • 20
  • 163
  • 226
9

Yes.
PHP has detailed error message for you.
You just have to turn it on.

To dislay it on the screen add these 2 lines at the top of the script:

ini_set('display_errors',1);
error_reporting(E_ALL);

Or if you want it to be logged instead,

ini_set('log_errors',1);
ini_set('display_errors',0);
error_reporting(E_ALL);

Also note that using die() is very bad practice.

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
5
$fh = fopen($path, 'r') or  die (error_get_last());