PHP 4.0 Bug #9434: Command line argument, that trates as QUERY_STRING, isn't proper.
| From: | sagawa at sohgoh dot net | Date: | Sat, 24 Feb 2001 09:33:33 +0000 |
| Subject: | PHP 4.0 Bug #9434: Command line argument, that trates as QUERY_STRING, isn't proper. | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-47372@lists.php.net to get a copy of this message | ||
From: sagawa@sohgoh.net
Operating system: Linux,Windows 2000
PHP version: 4.0.4pl1
PHP Bug Type: Feature/Change Request
Bug description: Command line argument, that trates as QUERY_STRING, isn't proper.
I get funny $HTTP_GET_VARS passed by command line argument
query_string,
on PHP 4.0.4(as far as I know :) with cgi-sapi.
This is sample for this problem.
test.php is <?php var_dump($HTTP_GET_VARS); ?>
and run from command line.
% php -f test.php 'AAA=xx&BB=yy' 'CC=zz'
array(2) {
["test_php_AAA"]=>
string(2) "xx"
["BB"]=>
string(8) "yy CC=zz"
}
`AAA' is connected with file name,
and inserted space between arguments.
(test.php was changed to test_php because of php variable
name restriction.)
So, I modify sapi/cgi/cgi_main.c.
% diff -u cgi_main.c~ cgi_main.c
--- cgi_main.c~ Sun Dec 3 10:09:13 2000
+++ cgi_main.c Thu Feb 22 21:20:47 2001
@@ -649,14 +649,10 @@
s = malloc(len + 1); /* leak -
but only for command line version, so ok */
*s = '\0'; /*
we are pretending it came from the environment */
- if (script_file) {
- strcpy(s, script_file);
- strcat(s, "+");
- }
for (i = ap_php_optind, len = 0; i <
argc; i++) {
strcat(s, argv[i]);
if (i < (argc - 1)) {
- strcat(s, "+");
+ strcat(s,
PG(arg_separator));
}
}
SG(request_info).query_string = s;
This works fine, like...
% php -f test.php 'AAA=xx&BB=yy' 'CC=zz'
array(3) {
["AAA"]=>
string(2) "xx"
["BB"]=>
string(2) "yy"
["CC"]=>
string(2) "zz"
}
--
Edit Bug report at: http://bugs.php.net/?id=9434&edit=1