Search code examples
phpfilefile-get-contentsfgets

file_get_contents with empty file not working PHP


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 ?


Solution

  • 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.