2016-01-08 9 views
1

Я пытаюсь передать некоторые аргументы в простой скрипт PHP в командной строке. Сценарий использует getopt для чтения аргументов. Однако метод всегда возвращает false, независимо от того, какие аргументы я укажу. Согласно документам это указывает на ошибку. Но как мне узнать, в чем проблема?PHP commandline: getopt всегда возвращает false

<?php 
$options = getopt("x"); 

if ($options === false) 
    echo "No result"; 
else 
    var_dump($options); 
?> 

// Commandline 
$ php myscript.php -x 
$ No result 

Что я делаю неправильно? Я пробовал всевозможные другие параметры аргументов в getopt(...), но результат всегда один и тот же: возвращается только false.

Любая идея?

+0

Когда я запускаю свой скрипт точно так, как вы его, я получаю ' array (1) {'x' => bool (false)} ', поэтому параметр' -x' разобран. Это ваш реальный код? –

+0

Да, это реальный код. Возможно ли, что getopt отключен каким-то образом? Я запускаю скрипт на общем сервере хостинга, и я не могу напрямую контролировать конфигурацию PHP. –

+0

BTW: Я использую PHP 5.5.14, если это имеет значение –

ответ

1

Вы должны указать имя параметра и, если это требуется или нет (с использованием : для необходимости и :: для дополнительного аргумента.

<?php 
$options = getopt("x:"); 

if ($options == false) 
    echo "No result"; 
else 
    var_dump($options); 
+0

Опуская ':' или '::' создает необязательное значение boolean, которое не принимает значения. –

+0

@MichaelBerkowski Вы правы с этим, это странно, что его код работает не так, как ожидалось – Patryk