Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:57577 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 25300 invoked from network); 30 Jan 2012 15:47:44 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Jan 2012 15:47:44 -0000 Authentication-Results: pb1.pair.com smtp.mail=yoram.b@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=yoram.b@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 212.199.177.89 as permitted sender) X-PHP-List-Original-Sender: yoram.b@zend.com X-Host-Fingerprint: 212.199.177.89 il-mr1.zend.com Received: from [212.199.177.89] ([212.199.177.89:52413] helo=il-mr1.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 83/18-53934-F9BB62F4 for ; Mon, 30 Jan 2012 10:47:43 -0500 Received: from il-gw1.zend.com (unknown [10.1.1.22]) by il-mr1.zend.com (Postfix) with ESMTP id 003116078A; Mon, 30 Jan 2012 17:46:08 +0200 (IST) Received: from mandor.localnet (10.1.3.58) by il-ex2.zend.net (10.1.1.22) with Microsoft SMTP Server (TLS) id 14.1.255.0; Mon, 30 Jan 2012 17:47:00 +0200 To: Dmitry Stogov Date: Mon, 30 Jan 2012 17:47:33 +0200 User-Agent: KMail/1.13.7 (Linux/2.6.37; KDE/4.7.2; i686; ; ) CC: , PHP Internals References: <201201301729.12063.yoram.b@zend.com> <4F26BA53.7040004@zend.com> In-Reply-To: <4F26BA53.7040004@zend.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-ID: <201201301747.33773.yoram.b@zend.com> X-Originating-IP: [10.1.3.58] Subject: Re: [PHP-DEV] Re: One more critical problem in 5.4 From: yoram.b@zend.com (yoram bar haim) As I sayed, my patch was not suggusted as fix, Dmitry is write about possible side effetcs, it was added only to prove that the problem is what we think it is. On Monday, January 30, 2012 05:42:11 PM Dmitry Stogov wrote: > Hi Mike, > > I confirm the bug. In case of empty output HTTP headers are sent to > stdout or stderr instead of FastCGI stream. > > To reproduce I configured nginx to use PHP FastCGI server on UNIX > socket, then launched (sapi/cgi/php-cgi -b /tmp/fcgi-php5) and performed > several request to empty PHP file. The HTTP headers were printed in > console running PHP. > > [dmitry@tpl2 CGI-DEBUG]$ sapi/cgi/php-cgi -b /tmp/fcgi-php5 > X-Powered-By: PHP/5.4.0RC7-dev > Content-type: text/html > > X-Powered-By: PHP/5.4.0RC7-dev > Content-type: text/html > > I afraid Yoram's patch is too radical and may have side effects. > Mike, could you please think about a safer way of fixing. > > Thanks. Dmitry. > > On 01/30/2012 07:29 PM, yoram bar haim wrote: > > I Debugged the issue described here by lior. > > the problem is : > > in php_request_shutdown() we call > > > > sapi_send_headers() after > > php_output_deactivate(). > > > > at this point, > > in main/output.c, > > OG(flags)& PHP_OUTPUT_ACTIVATED is false so > > > > php_output_write_unbuffered() calls > > > > php_output_stderr() instead of > > sapi_module handler. > > > > the following patch solves the issue but It might be a wrong solution > > (because other thins are dependent on this order) so I'm not suggesting > > it as fix. > > > > --- main/main.c.orig 2012-01-30 17:25:44.000000000 +0200 > > +++ main/main.c 2012-01-30 17:09:05.000000000 +0200 > > @@ -1738,12 +1738,13 @@ > > > > } else { > > > > php_output_end_all(TSRMLS_C); > > > > } > > > > + sapi_send_headers(TSRMLS_C); > > > > php_output_deactivate(TSRMLS_C); > > > > } zend_end_try(); > > > > /* 4. Send the set HTTP headers (note: This must be done AFTER > > > > php_output_discard_all() / php_output_end_all() !!) */ > > > > zend_try { > > > > - sapi_send_headers(TSRMLS_C); > > +/* sapi_send_headers(TSRMLS_C); */ > > > > } zend_end_try(); > > > > /* 5. Reset max_execution_time (no longer executing php code > > after > > > > response sent) */