|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-05-28 20:36 UTC] juro at shaw dot ca
Description: ------------ Using a generic web server with a simple CGI support (running on Windows XP), I fail to obtain any $_POST data. However, raw post data are OK. Raw post data is sent to the PHP-CGI.exe via redirected pipe handle. PHP-CGI reads correctly posted raw data using stdin. I suspect the culprit may be with the following PHP source code: File:cgi_main.c Routine:static int sapi_cgi_read_post(char *buffer, uint count_bytes TSRMLS_DC) ... tmp_read_bytes = read(0, buffer + read_bytes, count_bytes - read_bytes); ... Low level i/o functions read,write,open are not 100% portable. The code is most like meant to read stdin. Assuming that file descriptor for stdin is numerically equal to 0 on all platforms is wrong. The code should be probably something like this tmp_read_bytes = read(_fileno(stdin), buffer + read_bytes, count_bytes - read_bytes); PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 17:00:01 2025 UTC |
Using Windows XP OS we use a generic HTTP server (not Apache, not IIS, etc.) with CGI/1.1 support (no FCGI). PHP script fills a form and uses: CONTENT_TYPE = application/x-www-form-urlencoded REQUEST_METHOD = POST to post some filled form data. The HTTP server launches PHP-CGI.EX and writes the posted data to a handle that was redirected to be PHP-CGI.EXE STDIN. PHP-CGI.EXE does receive the data, which can be viewed correctly using the code: print "$HTTP_RAW_POST_DATA"; print_r($_SERVER["HTTP_RAW_POST_DATA"]); Both printouts show correctly (urlencoded) posted data. However, the $_POST array is empty: if (empty($_POST)) { echo "POST empty !!! (No data was submitted)"; }