2011-08-17 115 views
0

编辑:[解决]见下文。无法将命令行参数传递给运行PHP CLI的NSTask

我推出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 '回声123;'”
@ “ - R \ '回声123; \'”
@ “ - R \” 回声123; \ “”
Parse error: syntax error, unexpected $end in Command line code on line 1

对于:
@ “ - R '回波\' 你好\ ';'” Parse error: syntax error, unexpected T_STRING in Command line code on line 1

对于:
@ “ - 运行 '回声123;'”
Usage: php [options] ...

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

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

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

+0

不太可能有所作为,但如果使用'echo(123);'而不是'echo 123;'会怎么样? – DaveRandom

+0

没有,不管怎样,我已经找到了解决方案,请参见下文。谢谢! – Petruza

回答

1

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