[PHP-DEV] PHP 4.0 Bug #8744 Updated: call to header() causes CGI error From: emily <email protected>
Date: 01/16/01

ID: 8744
User Update by: emily <email protected>
Status: Open
Bug Type: IIS related
Description: call to header() causes CGI error

In case you missed my second message:

Here are two typical lines from the IIS error log: the first is a successful page load (code 200) and the second is the CGI error after the redirect (502) Note that in the IIS log format it is normal for a space to separate the URL
and the Querystring. The last column in the log is the referrer URL.

2001-01-16 17:20:30 192.168.1.29 - GET /success/ProbRev.php3 EmpID=5&New=Y
200 0 378 Mozilla/4.0+(compatible;+MSIE+5.5;+Windows+98;+Win+9x+4.90)
http://192.168.1.30/success/InterimRevSelect.php3?EmpID=5

2001-01-16 17:20:30 192.168.1.29 - GET /success/ProbRev.php3
EmpID=5&ProbRevID=12 502 0 374
Mozilla/4.0+(compatible;+MSIE+5.5;+Windows+98;+Win+9x+4.90)
http://192.168.1.30/success/InterimRevSelect.php3?EmpID=5

Previous Comments:
---------------------------------------------------------------------------

[2001-01-16 18:29:28] emily <email protected>
A few more things: the problem is not easily reproducible. Also, if I change all of the database calls to go to mySQL (which I have installed on Windows 2000) instead of SQL Server 2000 (which is the database system I was using, also installed on the same machine), I do NOT get the CGI errors. However, in both instances, the databases do get updated or otherwise manipulated successfully; it's just the redirect that fails when using SQL Server. Hope this helps.

---------------------------------------------------------------------------

[2001-01-16 14:12:01] derick <email protected>
Can you tell us what is in the logs of IIS?

---------------------------------------------------------------------------

[2001-01-16 14:07:45] emily <email protected>
Our situation is similar to that in bug report 8571, particularly situations 1 and 2. After adding, updating or deleting a record to a MSSQL database, the user is referred to this function (stored in file which is included in each page):

function pageRedirect($inURL) {
  header("Location: $inURL");
  exit;
}

$inURL is never exactly the same as the current URL - either you are redirected to a completely different file name, or to the same file name with a different query string appended.

The record modification part always completes successfully in MSSQL, and the header() function sends the user to the new URL, but this error occurs:

[start]
CGI ERROR
CGI application misbehaved by not returning a complete set of headers. The headers that it
did return are:
[end]

... and any code in the page that the user has been redirected to is NOT executed. If the user clicks refresh, it does and all is well.

This is a PHP web application being ported from a Linux/mySQL environment, where it works, so it appears to be an IIS-specific issue.

Thanks in advance for any feedback.

---------------------------------------------------------------------------

Full Bug description available at: http://bugs.php.net/?id=8744

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: php-dev-unsubscribe <email protected>
For additional commands, e-mail: php-dev-help <email protected>
To contact the list administrators, e-mail: php-list-admin <email protected>