2017-03-21 1 views
0

Je construis un site web en utilisant php. J'ai besoin d'envoyer une variable à un exécutable de ligne de commande à partir du site php, exécutez l'exécutable, puis lisez la réponse. Je crois que je n'envoie pas correctement l'argument à l'exécutable.Comment envoyer un argument à mon exécutable à partir de mon script php?

Mon code php:

<?php 
$a=escapeshellarg('6'); 
//set $c [lindex $argv 0]; 
$answer = shell_exec("D:/WebPages/Test/PHP_Test.exe $a"); 
echo $answer; 
?> 

Mon C# code exécutable

using System; 

namespace PHP_Test 
{ 
    class Hello 
    { 
     static void Main(string[] args) 
     { 
      if (args.Length == 0) 
      { 
       Console.WriteLine("Please enter a numeric argument."); 
      } 
      else 
      { 
       Console.WriteLine("Hello World!"); 

      } 
     } 
    } 
} 

Comme vous pouvez le voir, mon exécutable est actuellement tout mis en place pour fournir une réponse basée sur si un argument a été fourni ou non. Quand je n'envoie pas d'argument de php, j'obtiens la réponse correcte ("Veuillez entrer un argument numérique."). Cependant, chaque fois que j'essaie de fournir un argument, je ne reçois aucun commentaire, ce qui me porte à croire que je le fais de façon incorrecte.

Toute aide est appréciée merci.

Répondre

0

Avec variables apostrophes ne sont pas substitués avec ses valeurs, vous devez utiliser des guillemets doubles:

Modifier: et ajouter 2>&1 à la fin de la commande pour obtenir aussi le STDERR

$answer = shell_exec("D:\WebPages\PHP_Test.exe $a 2>&1"); 
+0

Salut, merci. Je l'ai passé à des guillemets doubles et éprouve toujours le même problème de sortie. – clutch1020

+0

J'ai édité la solution, essayez-la – gmc

+0

Toujours obtenir un blanc malheureusement – clutch1020

0

J'ai trouvé une partie de la réponse à mon problème. En incluant le chemin d'accès au fichier d'exécution, pour une raison quelconque, il ne me laisserait aucun argument. J'ai mis mon fichier d'exécution dans le dossier du répertoire et l'ai appelé sans aucun chemin menant au fichier exécutable et il a ensuite autorisé les arguments.

+0

Bien sûr, vous êtes dans Windows, donc vous devez utiliser des barres inversées. Voir ma réponse – gmc