Why is this in read() at all?
open() is made for opening the file descriptor, so IMO strict mode should be handled in there via a file_exists check.