Greetings, Hans Henrik Bergan!
> ... actually i forgot that the default fopen mode is "rb" ... anyhow, here
> is what's supposed to happen:
> $ touch bug.txt; chmod 0777 bug.txt; php -r '$o=new
> SplFileObject("bug.txt");var_dump($o->fwrite("test"));var_dump(error_get_last());'
> PHP Notice: SplFileObject::fwrite(): Write of 4 bytes failed with errno=9
> Bad file descriptor in Command line code on line 1
> bool(false)
> array(4) {
> ["type"]=>
> int(8)
> ["message"]=>
> string(81) "SplFileObject::fwrite(): Write of 4 bytes failed with errno=9
> Bad file descriptor"
> ["file"]=>
> string(17) "Command line code"
> ["line"]=>
> int(1)
> }
> changing the code to SplFileObject("bug.txt", "rb");
> makes the code work, but there's still the issue with cygwin's php's
> SplFileObject::fwrite() not noticing the write error
php -d 'display_errors=stderr'
?
> On Sat, 1 Oct 2022 at 18:47, Hans Henrik Bergan <[email protected]>
> wrote:
>> running PHP 7.3.7 in Cygwin 3.3.6, and SplFileObject::fwrite seems
>> completely broken.
>> to reproduce:
>> $ touch bug.txt; chmod 0777 bug.txt; php -r '$o=new
>> SplFileObject("bug.txt");var_dump($o->fwrite("test"));var_dump(error_get_last());'
>> int(0)
>> NULL
>>
>> so both fwrite() and error_get_last() failed to pick up that there was an
>> error,
>> but strace reveals:
>> 67 487251 [main] php 1693 __set_errno: ssize_t write(int, const void*,
>> size_t):1350 setting errno 9
>> 60 487311 [main] php 1693 write: -1 = write(3, 0x6FFFFFE65BF8, 4), errno 9
>>
>> errno 9 probably means: 9 EBADF Bad file descriptor.
>>
--
With best regards,
Andrey Repin
Sunday, October 2, 2022 16:49:02
Sorry for my terrible english...
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple