From manual page: https://php.net/streamwrapper.stream-read
Return values description specify :
If there are less than count bytes available, return as many as are available. If no more data is available, return either false or an empty string.
But method only has string as return value :
public streamWrapper::stream_read(int $count): string
This makes it incompatible with the false from doc description. Not sure if the method needs to support string|false, or the false mention removed from the description.