Невозможно передать аргументы командной строки в NSTask с PHP CLI - PullRequest
0 голосов
/ 18 августа 2011

Редактировать: [решено], см. Ниже.

Я запускаю PHP как NSTask и пытаюсь передать ему некоторые параметры командной строки:

NSTask *php = [[NSTask alloc] init];
[php setLaunchPath: phpPath];
NSArray *args = [[NSArray alloc] initWithObjects: @"-r 'echo 123;'", nil ];
[php setArguments: args];
[php launch];

Когда я запускаю это из Objective-C, я всегда получаю следующие ошибки PHP:

Для:
@ "- r 'echo 123;'"
@ "- r \ 'echo 123; \'"
@ "- r \" echo 123; \ ""
Parse error: syntax error, unexpected $end in Command line code on line 1

Для:
@ "- r 'echo \' hello \ ';'" Parse error: syntax error, unexpected T_STRING in Command line code on line 1

Для:
@ "- запустить 'эхо 123;'"
Usage: php [options] ...

Следует отметить, что все ошибки сообщаются из интерпретатора PHP при вызове из Objective-C, но когда я пытаюсь использовать ту же самую строку параметров в командной строке, она работает как положено.

Что здесь не так? Как мне написать аргументы, которые будут правильно переданы в NSTask?

PS: Моя настоящая цель - выполнить несколько include() строк вместо эха, который тоже не работает, и вместо этого я получаю сообщение об ошибке неожиданной строки Encapsed.

1 Ответ

2 голосов
/ 18 августа 2011

О, я видел это по другому вопросу.
Я рассматриваю -r 'echo 123;' как единый аргумент, когда на самом деле их два, это должно быть: NSArray *args = [[NSArray alloc] initWithObjects: @"-r", @"echo 123;", nil ];
Сожалею! и спасибо.

...