From: [EMAIL PROTECTED]
Operating system: Windows 2000
PHP version: 4.3.0
PHP Bug Type: Reproducible crash
Bug description: MSSQL/ODBC produce CGI Error:
When calling a PHP script that is using MSSQL or ODBC calls, I can
reporduce this error at least one out of every ten tries, on multiple
machines. I'm at the end of my rope trying to figure it out myself. If I
can reproduce the error, I figure I am a prime candidate to help solve it.
The error states:
CGI Error
The specified CGI application misbehaved by not returning a complete set
of HTTP headers. The headers it did return are:
And that's it. There is nothing after "are:"
This is how I reproduce (test for) the error: I have a PHP script that
generates a webpage. That webpage contains 4 iframes. (The iframes are
nothing more than a php page that echoes <html><body>x</body></html>. The
main page prints the code to invoke the iframes, and it also makes an
MSSQL or ODBC query. NOTE: I can also reproduce this error when making a
database call in conjuction with a header("location: ...") redirect as
well, but that's a little more annoying to test than the iframes since it
doesn't happen every time.
So, every reload on the main page is essentially 5 PHP requests (1 main +
4 iframes). If I refresh this test page, I can get at least one of the
iframes to error every 5 tries. Which, of course, is at least one error
every 25 requests.
Now on to the DB. If I comment out the DB call (be it an MSSQL or ODBC
query) I cannot reproduce the error. This is my guess... the bug happens
when PHP attempts to service a request at the exact moment something
closes in the DB call. I'm sorry I can't do any better than that for
troubleshooting. But, logically, the error is random enough that it
doesn't happen EVERY time, so all I can guess is that it is a pure timing
issue, which happens more frequently the more you hit the server as it is
making a DB request.
Any other info I can offer... I can reproduce this with IIS on three
Win2000 Servers and one Win2000 Professional box. I am not using Named
Pipes. I've tried several versions of ntwdblib.dll and am currently using
the one included with PHP 4.3.0 (12/27/2002). I only have SQL 2000
servers to connect to, but I've reproduced this bug with the three of them
that I use regularly.
My desktop (the Windows 2000 Professional) box is what I test with most
often, and it is running Service Pack 3 and is using the current MDAC (2.7
I believe).
I did not use the Win32 'installer' ... rather installed via the latest
.zip and my production boxes are SMP machines, so until SAPI is given the
thread-safe go-ahead I have to stick with the .exe
I can't think of anything more off the top of my head, but I would be more
than willing to give whatever feedback is requested. Unfortunately, I
thought this bug was only MSSQL related for some reason, so I've been
putting off switching everything to ODBC. I was very saddened today when
I experienced the error with ODBC as well. I've got approximately one
week to solve this before I have to launch a new site with my company, and
while the lauch will go either way, I don't want the executives to
question my decision to use PHP instead of VBscript (as the other
developers here know VB, and my argument/skills seemed strong enough to
sway to the PHP side). I'm not trying to pull any heart strings here,
like I said, the site is going to launch CGI errors or not, I'd just
rather have it flawless (and not field end-user calls on the issue to
boot).
--
Edit bug report at http://bugs.php.net/?id=21872&edit=1
--
Try a CVS snapshot: http://bugs.php.net/fix.php?id=21872&r=trysnapshot
Fixed in CVS: http://bugs.php.net/fix.php?id=21872&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=21872&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=21872&r=needtrace
Try newer version: http://bugs.php.net/fix.php?id=21872&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=21872&r=support
Expected behavior: http://bugs.php.net/fix.php?id=21872&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=21872&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=21872&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=21872&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=21872&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=21872&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=21872&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=21872&r=gnused