summaryrefslogtreecommitdiff
path: root/sapi/cli
diff options
context:
space:
mode:
Diffstat (limited to 'sapi/cli')
-rw-r--r--sapi/cli/getopt.c4
-rwxr-xr-xsapi/cli/tests/003-2.phpt25
2 files changed, 28 insertions, 1 deletions
diff --git a/sapi/cli/getopt.c b/sapi/cli/getopt.c
index 963c4554e1..0dd8a45f5b 100644
--- a/sapi/cli/getopt.c
+++ b/sapi/cli/getopt.c
@@ -107,6 +107,7 @@ int php_getopt(int argc, char* const *argv, const opt_struct opts[], char **opta
(*optind)++;
return (php_opt_error(argc, argv, *optind-1, optchr, OPTERRCOLON, show_err));
}
+ arg_start = 1 + optchr;
}
if (opts_idx < 0) {
while (1) {
@@ -120,6 +121,7 @@ int php_getopt(int argc, char* const *argv, const opt_struct opts[], char **opta
(*optind)++;
} else {
optchr++;
+ arg_start++;
}
return(php_opt_error(argc, argv, errind, errchr, OPTERRNF, show_err));
} else if (argv[*optind][optchr] == opts[opts_idx].opt_char) {
@@ -143,7 +145,7 @@ int php_getopt(int argc, char* const *argv, const opt_struct opts[], char **opta
}
return opts[opts_idx].opt_char;
} else {
- if (arg_start == 2) {
+ if (arg_start >= 2) {
if (!argv[*optind][optchr+1])
{
dash = 0;
diff --git a/sapi/cli/tests/003-2.phpt b/sapi/cli/tests/003-2.phpt
new file mode 100755
index 0000000000..2ed9b07db4
--- /dev/null
+++ b/sapi/cli/tests/003-2.phpt
@@ -0,0 +1,25 @@
+--TEST--
+defining INI options with -d (as 2nd arg)
+--SKIPIF--
+<?php
+include "skipif.inc";
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die ("skip not for Windows");
+}
+?>
+--FILE--
+<?php
+
+$php = getenv('TEST_PHP_EXECUTABLE');
+
+var_dump(`"$php" -nd max_execution_time=111 -r 'var_dump(ini_get("max_execution_time"));'`);
+var_dump(`"$php" -nd max_execution_time=500 -r 'var_dump(ini_get("max_execution_time"));'`);
+
+?>
+===DONE===
+--EXPECTF--
+string(16) "string(3) "111"
+"
+string(16) "string(3) "500"
+"
+===DONE===