file_get_contents with empty file not working PHP

mpgn picture mpgn · Jul 12, 2013 · Viewed 10.2k times · Source

I try to use file_get_contents form PHP but it's not working.

There is my code :

$filename = "/opt/gemel/test.txt";


if($filecontent = file_get_contents($filename)){

    $nom = fgets(STDIN);

    file_put_contents($filename, $nom, FILE_APPEND);
}
else
    echo "fail";

And my file test.txt is empty. (0 octets). He exists but he is empty.

When i write something into it, my code works perfectly but if he is empty my code echo "fails"

Why that, why he can't open the file text.txt ?

Answer

rael_kid picture rael_kid · Jul 12, 2013

The function file_get_contents returns the string that's in the file. If the file contains no data, then file_get_contents returns an empty string. If you would try to var_dump('' == false); you would get true. So, even though the file can be read, the contents of the file evaluates to false.

If you would use this line, your code should work:

if($filecontent = file_get_contents($filename) !== false){

Edit; link to the documentation of the Comparison operators.