From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from forward501p.mail.yandex.net (forward501p.mail.yandex.net [77.88.28.111]) by sourceware.org (Postfix) with ESMTPS id 1785A3858D32 for ; Sun, 2 Oct 2022 13:50:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1785A3858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yandex.ru Received: from sas2-e7f6fb703652.qloud-c.yandex.net (sas2-e7f6fb703652.qloud-c.yandex.net [IPv6:2a02:6b8:c14:4fa6:0:640:e7f6:fb70]) by forward501p.mail.yandex.net (Yandex) with ESMTP id 0434F6211F64; Sun, 2 Oct 2022 16:50:03 +0300 (MSK) Received: by sas2-e7f6fb703652.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id DTxyjadjl2-o2h4Q4PM; Sun, 02 Oct 2022 16:50:02 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1664718602; bh=JTfz4IOJdK9jU+jtnt/RMVFrcGH1pOcgz0ZFXhzbaSk=; h=In-Reply-To:Subject:Date:References:To:Message-ID:Reply-To:From; b=UvyNvFANPcmyxSQSV42u1NQGD29jpaFl1o9li7VNyqXMl9RDL+fxk7/eiGkeSlsSI 83tnJ5+ei/TSXKngljbXjM+aAob1IDMgEI2hL2i0nMoeE83dAh2KRU+31GDZhPb2lz hTP+MNw1tYpp7qPbBmM/JWtDFpjs1d9fSZUEgMGs= Authentication-Results: sas2-e7f6fb703652.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Received: from [192.168.1.10] (HELO daemon2.darkdragon.lan) by daemon2 (Office Mail Server 0.8.12 build 08053101) with SMTP; Sun, 02 Oct 2022 13:49:37 -0000 Date: Sun, 2 Oct 2022 16:49:37 +0300 From: Andrey Repin X-Mailer: The Bat! (v9.3.4) Professional Reply-To: cygwin@cygwin.com Message-ID: <119953421.20221002164937@yandex.ru> To: Hans Henrik Bergan , cygwin@cygwin.com Subject: Re: Cygwin 3.3.6: PHP's SplFileObject::fwrite seems broken In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_THEBAT,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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 > 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...