0

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

我正在启动 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

对于:
@"--run 'echo 123;'"
Usage: php [options] ...

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

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

PS:我真正的目标是执行一些include()行而不是回显,这也不起作用,而是我得到一个意外的封装字符串的错误。

4

1 回答 1

2

哦,我在另一个问题上看到了。
我将-r 'echo 123;'其视为一个单独的参数,而实际上它们是两个,它应该是:
NSArray *args = [[NSArray alloc] initWithObjects: @"-r", @"echo 123;", nil ];
对不起!谢谢。

于 2011-08-17T22:09:25.660 回答