2011-08-17 3 views
0

Modifier: [Résolu] voir ci-dessous.Impossible de passer les arguments de ligne de commande à un NSTask exécutant l'interface de ligne de commande PHP

Je lance PHP comme un NSTask et d'essayer de passer quelques options de ligne de commande pour elle:

NSTask *php = [[NSTask alloc] init]; 
[php setLaunchPath: phpPath]; 
NSArray *args = [[NSArray alloc] initWithObjects: @"-r 'echo 123;'", nil ]; 
[php setArguments: args]; 
[php launch]; 

Quand je lance ce billet depuis Objective-C je reçois toujours les erreurs PHP suivantes:

Pour:
@ "- r 'echo 123;'"
@ "- r \ 'echo 123; \'"
@ "- r \" echo 123; \ ""
Parse error: syntax error, unexpected $end in Command line code on line 1

Pour:
@ "- r 'echo \' bonjour \ ';'" Parse error: syntax error, unexpected T_STRING in Command line code on line 1

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

Il convient de noter que toutes les erreurs sont signalées par l'interpréteur PHP lorsqu'il est appelé à partir d'Objective-C, mais quand j'essaie exactement la même chaîne d'option sur le virgule d ligne, cela fonctionne comme prévu.

Quel est le problème ici? comment dois-je écrire les arguments à transmettre correctement au NSTask? PS: Mon but réel est d'exécuter quelques lignes include() au lieu de l'écho, qui ne fonctionne pas non plus, et à la place j'obtiens une erreur d'une chaîne encapsulée inattendue.

+0

Peu probable de faire une différence, mais que faire si vous utilisez 'echo (123);' au lieu de 'echo 123;'? – DaveRandom

+0

Non ce n'est pas ça, de toute façon j'ai déjà trouvé la solution, voir ci-dessous. Merci! – Petruza

Répondre

1

Oh, je l'ai vu sur une autre question.
je traite -r 'echo 123;' comme un seul argument, alors qu'en fait ils sont deux, il devrait être:
NSArray *args = [[NSArray alloc] initWithObjects: @"-r", @"echo 123;", nil ];
Désolé! et merci.

Questions connexes