2011-08-17 109 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 ];
對不起!謝謝。