ID: 39284 User updated by: paul dot visco at roswellpark dot org Reported By: paul dot visco at roswellpark dot org -Status: Feedback +Status: Open Bug Type: Session related Operating System: Windows Server 2003 PHP Version: 5.1.6 New Comment:
I don't think that the problem is PHP's fault. In fact I am sure it is an IE 7 problem. I just think perhaps there can be a PHP solution as turning zlib_compression on or using output buffering to buffer the whole page works. Considering so many people are going to be using IE 7 to view PHP pages served from IIS , I imagine it might be something you would want to look into. I re-wrote the problem description page to break down the problem more. here is the source required <?php session_start(); ?><html> <head> <script type="text/javascript" src="javascript.js"></script> </head> <body> <h1>This data will not show up properly on refresh</h1> </body> </html> FACT: Page will not refresh properly (shows up blank on refresh) in IE 7 when the following conditions are met: 1. PHP page uses session_start(); 2. AND There is external link to javascripts in the HEAD of the document. 3. AND The page is not completely output buffered until the end of the doc OR zlib.output_compression is not enabled in the php.ini ( it is not enabled by default) 4. AND The page is being served on IIS 6 Work Arounds 1. Do not put your external javascript in the head of the document. E.g. move it somewhere else. Not acceptable as it does not cache and essage with page organization. (View Page Source) 2. Edit php.ini to set zlib.output_compression to On. This seesm to fix the problem but is not enabled by default in php.ini 3. If you cannot change your php.ini settings use inline PHP output buffering with ob_start and ob_get_clean(); 4. View the page with firefox or IE 6. Hope this makes it more clear. I also reported the bug to microsoft. Thanks, Paul Previous Comments: ------------------------------------------------------------------------ [2006-10-27 21:47:34] [EMAIL PROTECTED] Please explain why do you think it's a problem of PHP, not IE7. ------------------------------------------------------------------------ [2006-10-27 18:39:02] paul dot visco at roswellpark dot org Description: ------------ Pages using PHP sessions and external javascript in the head portion of the html document and which served from IIS 6 to IE 7 are not refreshing properly (displays blank on refresh). I have a full description of it here including the minimal source to create the error. Description, source and work arounds that may shed light on the problem: http://durge.roswellpark.org/ie7Bugs/ I think it has to do with IIS not reporting Content-Length because if I buffer all output till the end, set Content-Length header and then echo buffer to client it works. e.g. work around http://durge.roswellpark.org/ie7Bugs/sourceWithOutputBuffering.php Reproduce code: --------------- Source with description: http://durge.roswellpark.org/ie7Bugs/ <?php session_start(); ?><html> <head> <script type="text/javascript" src="javascript.js"></script> <title>IE 7 false content-length - refresh bug demo</title> </head> <body> <h1>IE 7 Content-Length Bugs</h1> <p>This will not show up on refrrsh when served from IIS 6 with PHP 5.1.6 to IE 7.</p> </body> </html> Expected result: ---------------- The page should display the text on load and on refresh. Actual result: -------------- The page does not refresh properly when served from IIS 6 to IE 7. Look fine on first load, but appears intermittently blank on refresh. Works fine in firefox and IE 6. it only happens when there ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39284&edit=1
