summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2002-11-22 10:15:47 +0000
committerEdin Kadribasic <edink@php.net>2002-11-22 10:15:47 +0000
commit714a5be6ccea1bddb3e8d3a31fa520cb8b744f71 (patch)
treeae9031a3ffe750c569af0fbd951d0fe51224be47
parentf200f739d8089ac0156ea4064696d32fff45692c (diff)
downloadphp-git-714a5be6ccea1bddb3e8d3a31fa520cb8b744f71.tar.gz
Fixed bug #19207 by adding cgi.rfc2616_headers configuration directive.
-rw-r--r--php.ini-dist8
-rw-r--r--php.ini-recommended8
-rw-r--r--sapi/cgi/cgi_main.c19
3 files changed, 33 insertions, 2 deletions
diff --git a/php.ini-dist b/php.ini-dist
index 05e78f8cff..5c85cc8c41 100644
--- a/php.ini-dist
+++ b/php.ini-dist
@@ -446,6 +446,14 @@ enable_dl = On
; Set to 1 if running under IIS. Default is zero.
; fastcgi.impersonate = 1;
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Set to 1 if running under IIS. Default is zero.
+;cgi.rfc2616_headers = 0
+
+
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
diff --git a/php.ini-recommended b/php.ini-recommended
index 8a59a5e954..49430c148b 100644
--- a/php.ini-recommended
+++ b/php.ini-recommended
@@ -461,6 +461,14 @@ enable_dl = On
; Set to 1 if running under IIS. Default is zero.
; fastcgi.impersonate = 1;
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Set to 1 if running under IIS. Default is zero.
+;cgi.rfc2616_headers = 0
+
+
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c
index fe0748f865..a647f6a26e 100644
--- a/sapi/cgi/cgi_main.c
+++ b/sapi/cgi/cgi_main.c
@@ -241,8 +241,23 @@ static int sapi_cgi_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)
int len;
sapi_header_struct *h;
zend_llist_position pos;
-
- len = sprintf(buf, "Status: %d\r\n", SG(sapi_headers).http_response_code);
+ long rfc2616_headers = 0;
+
+ /* Check wheater to send RFC2616 style headers compatible with
+ * PHP versions 4.2.3 and earlier compatible with web servers
+ * such as IIS. Default is informal CGI RFC header compatible
+ * with Apache.
+ */
+ if (cfg_get_long("cgi.rfc2616_headers", &rfc2616_headers) == FAILURE) {
+ rfc2616_headers = 0;
+ }
+
+ if (rfc2616_headers && SG(sapi_headers).http_status_line) {
+ len = sprintf(buf, "%s\r\n", SG(sapi_headers).http_status_line);
+ } else {
+ len = sprintf(buf, "Status: %d\r\n", SG(sapi_headers).http_response_code);
+ }
+
PHPWRITE_H(buf, len);
if (SG(sapi_headers).send_default_content_type) {