繁体   English   中英

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

[英]Can't pass command line arguments to an NSTask running the PHP CLI

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

我正在启动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 \\'echo 123; \\'”
@“ - r \\”echo 123; \\“”
Parse error: syntax error, unexpected $end in Command line code on line 1

对于:
@“ - Parse error: syntax error, unexpected T_STRING in Command line code on line 1 \\'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的错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM