无法将命令行参数传递给运行PHP CLI的NSTask

时间:2011-08-17 22:01:01

标签: php objective-c cocoa macos nstask

编辑:[已解决]见下文。

我正在以NSTask启动PHP并尝试向其传递一些命令行选项:

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'回音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

:用于:
@“ - 运行'echo 123;'”
Usage: php [options] ...

应该注意的是,从Objective-C调用时,PHP解释器会报告所有错误,但是当我在命令行上尝试完全相同的选项字符串时,它会按预期工作。

这里有什么问题?我应该如何编写参数以正确传递给NSTask?

PS:我的真正目标是执行一些include()行而不是echo,这也不起作用,而是我得到一个意外的Encapsed String的错误。

1 个答案:

答案 0 :(得分:2)

哦,我在另一个问题上看到了它 我将-r 'echo 123;'视为一个论点,实际上它们是两个,它应该是:
NSArray *args = [[NSArray alloc] initWithObjects: @"-r", @"echo 123;", nil ];
抱歉!并谢谢。