ID:               43256
 Updated by:       [EMAIL PROTECTED]
 Reported By:      carsten_sttgt at gmx dot de
-Status:           Open
+Status:           Feedback
 Bug Type:         IIS related
 Operating System: Windows_NT
 PHP Version:      5.2.5
 New Comment:

what is this set in your php.ini:
cgi.rfc2616_headers = 0

(look in the phpinfo() output!)



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

[2007-11-12 17:59:53] carsten_sttgt at gmx dot de

> What are you using exactly with IIS?
> PHP FastCGI binary or ISAPI module?

As you can see in the examples: both. Or in other words: I can't know,
if a script is used with ISAPI or CGI on a customer installation.


> note: Only former is really useful/working properly)

But this is only true for PHP. Why? With other scripting languages, I
have no problem to set this header via ISAPI.

And with PHP/ISAPI there is only one problem:
I must use first a header() call to set the status, and then I can use
header() with location.
| header('HTTP/1.0 303 See Other');
| header('Location: http://www.example.com/');
(The first header() call is normaly only necessary, if I want change
the default reason phrase)

But what ever happens in the PHP core during the first header call,
should also done from PHP, if I use the status parameter in header()
(like it works with Apache):
| header('Location: http://www.example.com/', true, 303);


Regarding PHP/CGI:
A CGI which want set/use it't own headers (not parsed from the server),
must have a script name which starts with "nph-" (that's not only true
for IIS, also for other webservers). But if the name from a PHP script
is e.g. "nph-test.php", there is no correct output at all.
(as before, with other scripting languages, this works without
problems.)

(Or all together: With other scripting languages I use the same
documented command(s) to set the header on all webservers in the same
way. Only with CGI I must rename the script. With PHP the same command
does work different on different webserver and nph-CGI does't work at
all.)

Regards,
Carsten

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

[2007-11-12 11:23:51] [EMAIL PROTECTED]

What are you using exactly with IIS? PHP FastCGI binary or ISAPI
module? (note: Only former is really useful/working properly)

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

[2007-11-12 00:19:03] carsten_sttgt at gmx dot de

Description:
------------
Hallo,

in addition to Bug #42969 I've done some more tests. Tere is really
something wrong with header() together with IIS.

The behaviour is different, if I use the CGI or ISAPI.

First I must also say: I have no problem to set this header correct
with ASP, Perl or Phyton. Regardless if I use CGI or ISAPI. Of course
with CGI, the name of such a script must be prepend with "nph-".

As you can see, the only way to set the correct header/code is:
Having PHP as ISAPI and using header() twice. First with the status and
second with the location.

This is totally different to Apache, where I must use only one header()
with location and status as parameter (Testscript 2).

Especially with IIS/ISAPI, Testscript 2 should also work. Or remove the
status parameter at all: No different behaviour on different platforms.

For IIS/CGI the actual result is acceptable.

For IIS/NPH-CGI: It's not working in no way at the moment!

Regards,
Carsten



Reproduce code:
---------------
Testscript 1 (test.php):
------------------------
<?php
header('HTTP/1.0 303 See Other');
header('Location: http://www.example.com/');
?>

Testscript 2 (test.php):
------------------------
<?php
header('Location: http://www.example.com/', true, 303);
?>

Testscript 3 (nph-test.php):
----------------------------
<?php
echo "HTTP/1.0 303 See Other\r\n";
echo "Location: http://www.example.com/\r\n\r\n";;
?>


Expected result:
----------------
D:\PHP>pear-request -r 0 -S http://localhost/test.php
GET http://localhost/test.php --> 303 See Other


Actual result:
--------------
Testscript 1, 2 and 3 with nph-cgi:
| D:\PHP>pear-request -r 0 -S http://localhost/nph-test.php
| GET http://localhost/nph-test.php --> ERROR: Malformed response

Testscript 1 with ISAPI:
| D:\PHP>pear-request -r 0 -S http://localhost/test.php
| GET http://localhost/test.php --> 303 See Other

Testscript 1 with CGI:
| D:\PHP>pear-request -r 0 -S http://localhost/test.php
| GET http://localhost/test.php --> 302 Object Moved

Testscript 2 with ISAPI:
| D:\PHP>pear-request -r 0 -S http://localhost/test.php
| GET http://localhost/test.php --> 303 Undescribed

Testscript 2 with CGI:
| D:\PHP>pear-request -r 0 -S http://localhost/test.php
| GET http://localhost/test.php --> 302 Object Moved



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


-- 
Edit this bug report at http://bugs.php.net/?id=43256&edit=1

Reply via email to