Bug #76347 [Asn->Nab]: getopt() only usable once
Edit report at https://bugs.php.net/bug.php?id=76347&edit=1
ID: 76347
Updated by: cmb@php.net
Reported by: kaishos at gmail dot com
Summary: getopt() only usable once
-Status: Assigned
+Status: Not a bug
Type: Bug
Package: PHP options/info functions
Operating System: ubuntu0.16.04.1
PHP Version: 7.0.30
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
The last two examples also behave as expected, since -f is no
valid option for getopt('t:'), so âfooâ is not regarded as
argument of the -f option, but rather as non-option, which
terminates further processing of options.
Previous Comments:
------------------------------------------------------------------------
[2018-05-24 12:33:47] kaishos at gmail dot com
Ah yes, now I see that I did wrong, it was that there should be no space between arguments -f and -t
and their values for it work as you pointed out.
-ffoo -tbar
Array
(
[f] => foo
)
Array
(
[t] => bar
)
-ffoo -t bar (this works)
Array
(
[f] => foo
)
Array
(
[t] => bar
)
-f foo -tbar
Array
(
[f] => foo
)
Array
(
)
-f foo -t bar
Array
(
[f] => foo
)
Array
(
)
------------------------------------------------------------------------
[2018-05-24 08:53:59] cmb@php.net
From what I can tell, no functionality has been removed. At least,
I get the same result with PHP 5.6.32, for instance. And this
result is to be expected, since f: looks for an option with a
required argument (which is -t in this case), and t: looks for an
option with a required argument which is not there. Compare that
to:
php test.php -ffoo -tbar
=>
Array
(
[f] => foo
[t] => bar
)
Array
(
[t] => bar
)
Which is also expected behavior.
So again, do you get differing results?
------------------------------------------------------------------------
[2018-05-24 08:13:05] kaishos at gmail dot com
Well then I know, as this worked before we upgraded to 7.0, strange that existing functionality was
removed then
------------------------------------------------------------------------
[2018-05-23 21:20:26] cmb@php.net
Firstly, active suport support for PHP 7.0 ended five months
ago[1], so this branch will only receive security related fixes.
Secondly, the expected result is actually:
Array
(
[f] => -t
)
Array
(
)
See <http://php.net/manual/en/function.getopt.php>.
If you really get the reported actual result with an actively
supported PHP version, this would be a bug. Please check again.
[1] <http://php.net/supported-versions.php>
------------------------------------------------------------------------
[2018-05-16 08:42:22] kaishos at gmail dot com
Description:
------------
This affects php 7.0.28 that is default packages with ubuntu, could not find it in the list
seems that it will not parse more options if you have parsed one.
it has similarity with:
https://bugs.php.net/bug.php?id=35594
Test script:
---------------
create file called test.php and add:
<?php
$fromOpt = getopt("f:");
$toOpt = getopt("t:");
print_r($fromOpt);
print_r($toOpt);
?>
https://bugs.php.net/bug.php?id=35594&edit=1
then run:
php test.php -f -t
Expected result:
----------------
Array
(
[f] =>
)
Array
(
[t] =>
)
Actual result:
--------------
Array
(
[f] =>
)
Array
(
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76347&edit=1
Thread (6 messages)